У меня есть 3 метода построения:
@Builder(builderMethodName = "b1")
public static User builder1(String name, String age) {
return User.b3().name(name).age(age).build();
}
@Builder(builderMethodName = "b2")
public User(String name, String date, String type) {
super();
this.name = name;
this.date = date;
this.type = type;
}
@Builder(builderMethodName = "b3")
public User(String name, String age, String date, String type) {
super();
this.name = name;
this.age = age;
this.date = date;
this.type = type;
}
Когда я использую b1
-builder, я ожидаю, что этим конструктором можно установить только свойства name
и age
.Однако использование этого также работает (но не должно):
User.b1().name("a").age("1").date("12").type("b").build();
То же самое относится к b2
-builder.Компоновщик должен предоставлять только name
, date
и type
, однако компиляторы b1
и b2
поддерживают те же свойства, что и b3
, даже если объявление этих методов ограничивает его.
Как я могу ограничить установленные свойства b1
и b2
-builder?