Скажите, что у меня есть следующие классы
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class A {
private String item1;
private String item2;
private String item3;
}
и
@Data
public class B extends A {
private String item4;
@Builder(builderMethodName = "bBuilder")
public B(String item1, String item2, String item3, String item4) {
super(item1, item2, item3);
this.item4 = item4;
}
}
как я могу (или есть ли способ) гарантировать, что дочерний конструктор вызовет " правильно "конструктор, когда я вызываю супер конструктор? Точнее говоря, я хочу на 100% убедиться, что три передаваемых мной строковых значения действительно установлены на правильные поля в родительском элементе, а не что-то, где, скажем, item1 in установлен на item2.
Я знаю что я мог, например, либо:
- явно создать свой собственный конструктор all args
- в дочернем конструкторе, вызвать все сеттеры родительского
но мне просто любопытно, насколько Ломбок достаточно умен, чтобы установить поля в дочернем классе на правильные поля в родительском классе?
Редактировать :
Я знаю, что порядок полей определяет порядок полей конструктора, но это для меня недостаточно безопасно, так как, если кто-то вставит новое поле, скажем, посередине, то оно скинет все .
Однако, возможно, @SuperBuilder мог бы быть чем-то, что я мог бы использовать, как некоторые предлагали, если нет, тогда я просто явно создам свой собственный конструктор, чтобы гарантировать порядок полей.