@SuppressWarnings ({"InnerClassFieldHidesOuterClassField"})
public class ImmutableObject {
@NotNull
private final String param1;
@NotNull
private final String param2;
@Nullable
private final String param3;
@Nullable
private final String param4;
public class Builder {
@NotNull
private final String param1;
@NotNull
private final String param2;
@Nullable
private String param3;
@Nullable
private String param4;
public Builder (String param1, String param2) {
this.param1 = param1;
this.param2 = param2;
}
public Builder param3 (String param3) {
this.param3 = param3;
return this;
}
public Builder param4 (String param4) {
this.param4 = param4;
return this;
}
public ImmutableObject build () {
return new ImmutableObject (this);
}
}
private ImmutableObject (Builder builder) {
this.param1 = builder.param1;
this.param2 = builder.param2;
this.param3 = builder.param3;
this.param4 = builder.param4;
}
}