如何实现龙目岛抽象类@Builder
2022-09-01 18:23:50
我有扩展抽象类的类,我不想放在所有子类之上。@Builder
有没有办法为抽象类实现龙目岛?@Builder
我有扩展抽象类的类,我不想放在所有子类之上。@Builder
有没有办法为抽象类实现龙目岛?@Builder
使用新的(实验性)注释的龙目岛1.18.2(及更高版本)可以实现这一点。唯一的限制是层次结构中的每个类都必须具有批注。没有办法放上所有的子类,因为龙目岛在编译时无法知道所有的子类。有关详细信息,请参阅龙目岛文档。@SuperBuilder
@SuperBuilder
@SuperBuilder
例:
@SuperBuilder
public abstract class Superclass {
private int field1;
}
@SuperBuilder
public class Subclass extends Superclass {
private int field2;
}
Subclass instance = Subclass.builder().field1(1).field2(2).build();
根本不可能。生成器在编译期间生成到超类中,并且它不能对最终实现它的可能子类有任何了解。
例如,子类可能具有必须用于实例的构造函数才能具有有效状态,并且在生成生成器时,Lombok 不能对此有任何了解。
请查看@Builder文档中的示例代码。您很快就会发现,不可能将其调整为实例化未知的子类。