【发布时间】:2021-09-22 13:09:51
【问题描述】:
我想检查必填字段(姓名、年龄和邮政编码)是否包含值或不为空。
典型的方式是
Person person = new Person();
person.setName("Cookie");
person.setAge(20);
//validation
if(person.getAge() != null && person.getName() != null){
return true;
}
在我原来的课程中,我有 20 多个字段需要检查,因此我想知道是否有更优雅的方法来执行此操作?
简单的 POJO 类示例:
public class Person {
String name;
int age;
String address;
int postcode;
public Person() {
}
public String getName() {
return this.name;
}
public void setName(String value) {
this.name = value;
}
//...etc setter and getters
}
【问题讨论】:
-
你应该重新设计你的类。尝试使用默认值启动每个变量,例如 int 为 0,字符串为空字符串,并且设置您的 setter 方法以检查空内容。这样一来,您就不必担心 NPE,而只需担心内容。
-
@Melron int 自动将 0 作为默认值。你也在改变功能,“”不是一个有效的名字,那为什么要验证为真呢?
-
@Stultuske 是的,我刚看到
if(person.getAge() != null,我认为有一些计算并返回一个整数类?关于名称,使用if (name.equals("something"))显然比使用if (name != null && name.equals("something"))更好 -
如果您不能使用验证框架(@NotNull 等),那么也许某些(如果不是全部)类和/或字段应该是不可变的,并在构造函数中进行验证.
-
一个细节,
int不能是null,所以person.getAge() != null永远是真的。
标签: java validation pojo