sam*_*sam 3 java design-patterns builder lombok
我有扩展抽象类的类,我不想把它@Builder放在所有子类之上.
有没有办法@Builder为抽象类实现Lombok ?
Tor*_*ben 10
根本不可能。构建器在编译期间生成到超类中,它无法了解最终将实现它的可能子类。
例如,子类可能具有必须用于实例才能具有有效状态的构造函数,而 Lombok 在生成构建器时无法了解它。
查看@Builder 文档中的示例代码。您很快就会发现,将它改编为实例化一个未知的子类是不可能的。
这可以使用lombok 1.18.2(及更高版本)使用新的(实验性)注释@SuperBuilder.唯一的限制是层次结构中的每个类都必须具有@SuperBuilder注释.没有办法放置@SuperBuilder所有子类,因为Lombok在编译时无法知道所有子类.有关详细信息,请参阅lombok文档.
例:
@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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4599 次 |
| 最近记录: |