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();
Что прекрасно, но я не понимаю пару частей.
Есть две Новые операторы , один в вызывающем операторе и один в методе build()
, но создан только один новый объект?
Кроме того, если я затем вызову второй раз, без второго необязательного параметра:1012 *
MyPojo myPojo = new MyPojo.Builder("req").optionalOne(1).build();
Почему необязательно два возвращаются к значению по умолчанию (нулю).И не сохранять значение, переданное в первый раз (2), это статический класс, поэтому один экземпляр используется всеми MyPojos?