为Builder模式中的属性设置默认值,避免空指针异常的发生。
Builder模式是一种创建型设计模式,在该模式中,我们使用Builder对象逐步构建复杂对象。然而,如果在Builder模式中某一属性没有被正常设置,可能会导致空指针异常的发生。例如:
public class User { private String name; private int age; private String email;
// private constructor
private User(Builder builder) {
this.name = builder.name;
this.age = builder.age;
this.email = builder.email;
}
public static class Builder {
private String name;
private int age;
private String email;
public Builder name(String name) {
this.name = name;
return this;
}
public Builder age(int age) {
this.age = age;
return this;
}
public Builder email(String email) {
this.email = email;
return this;
}
public User build() {
return new User(this);
}
}
// public getters
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getEmail() {
return email;
}
}
在上述代码中,如果在创建Builder对象的同时没有设置属性值,例如:
User.Builder builder = new User.Builder(); User user = builder.build();
那么构造User对象时就会抛出空指针异常。为避免这种情况,可以为属性设置默认值:
public static class Builder { private String name = ""; private int age = 0; private String email = "";
public Builder name(String name) {
this.name = name;
return this;
}
public Builder age(int age) {
this.age = age;
return this;
}
public Builder email(String email) {
this.email = email;
return this;
}
public User build() {
return new User(this);
}
}
这样,当属性没有被设置时,会使用默认值,而不是抛出