在使用含参的构造器赋值时,如何避免属性赋值为null?
1.宽容型——把null参数转换为一个适当的非null值
public Employee(String name) {
super();
if (name == null) {
this.name = "unknown";
} else {
this.name = name;
}
}
或者直接this.name=Objects.requireNonNullElse(name,"unknown"); 也可以达到和上面一样的效果(但是jdk8还没有这个方法)
2.严格型:拒绝null参数
public Employee(String name) {
super();
this.name=Objects.requireNonNull(name, "name属性不可以为空");
}
public class EmployeeTest {
public static void main(String[] args) {
try {
Employee employee = new Employee(null);
System.out.println(employee);
} catch (Exception e) {
e.printStackTrace();
}
}
}
严格型赋null值时直接报异常,个人觉得这种办法会更好