public class MyPojo{
String required;
Integer optionalOne;
Integer optionalTwo;
private MyPojo(Builder builder){
this.required = builder.required
this.optionalOne = builder.one;
this.optionalTwo = builder.two;
}
public static class Builder{
String required;
Integer optionalOne =0;
Integer optionalTwo =0;
public Builder(String req){
this.required = req;
return this;
}
public Builder optionalOne(Integer one){
this.one = one;
return this;
}
public Builder optionalTwo(Integer two){
this.two = two;
return this;
}
public MyPojo build(){
return new MyPojo(this);
}
}
}
然后这样调用:
MyPojo myPojo = new MyPojo.Builder("req").optionalOne(1).optionalTwo(2).build();
这一切都很可爱,但我不明白几个部分。
有两个New语句,一个在调用语句中,一个在build()
方法中,但是只创建了一个新对象?
另外,如果我再调用第二次,没有第二个可选参数:
MyPojo myPojo = new MyPojo.Builder("req").optionalOne(1).build();
为什么 optionalTwo 会恢复为默认值(零)。并且不保留第一次传递的值(2),它是一个静态类,所以一个实例在所有 MyPojos 之间共享?