我正在使用Builder模式并且遇到如何向新创建的对象添加新的"属性":
public class MsProjectTaskData {
private boolean isAlreadyTransfered;
private String req;
public static class Builder {
private boolean isAlreadyTransfered = false;
public Builder withTransfered(boolean val) {
isAlreadyTransfered = val;
return this;
}
public MsProjectTaskData build() {
return new MsProjectTaskData(this);
}
}
private MsProjectTaskData(Builder builder) {
isAlreadyTransfered = builder.isAlreadyTransfered;
}
public MsProjectTaskData(String req) {
this.req = req;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用Builder创建一个新对象:
MsProjectTaskData data = new MsProjectTaskData.Builder().withTransfered(true).build();
Run Code Online (Sandbox Code Playgroud)
但是使用这种方法,req新创建的对象中的字符串会丢失(当然).
是否有可能使用新的set isAlreadyTransfered变量和"旧"对象中的"旧" 字符串创建新对象?req
也许我必须将旧的对象引用传递给Builder,但我不知道如何做到这一点.也许使用Builder模式对这种方法不是很有用吗?
编辑:(在Eugene发表评论后)
想想,我明白了:
public …Run Code Online (Sandbox Code Playgroud)