如何为抽象实现 Lombok @Builder class
How to implements Lombok @Builder for Abstract class
我有扩展抽象 class 的 classes,我不想将 @Builder
放在所有子 classes 之上。
有没有什么方法可以为抽象 class 实现 Lombok @Builder
?
根本不可能。生成器在编译期间生成到超级 class 中,它无法知道最终将实现它的可能子 classes。
例如,子 class 可能具有构造函数,实例必须使用这些构造函数才能具有有效状态,而 Lombok 在生成构建器时不知道它。
查看@Builder 文档中的示例代码。您很快就会发现,将其改编为实例化未知的子 class.
是不可能的
这在 lombok 1.18.2(及更高版本)中使用新的(实验性)注释 @SuperBuilder
是可能的。唯一的限制是层次结构中的每个 class 都必须具有 @SuperBuilder
注释。没有办法将 @SuperBuilder
放在所有 subclasses 上,因为 Lombok 在编译时无法知道所有 subclasses。
有关详细信息,请参阅 lombok documentation。
示例:
@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();
我有扩展抽象 class 的 classes,我不想将 @Builder
放在所有子 classes 之上。
有没有什么方法可以为抽象 class 实现 Lombok @Builder
?
根本不可能。生成器在编译期间生成到超级 class 中,它无法知道最终将实现它的可能子 classes。
例如,子 class 可能具有构造函数,实例必须使用这些构造函数才能具有有效状态,而 Lombok 在生成构建器时不知道它。
查看@Builder 文档中的示例代码。您很快就会发现,将其改编为实例化未知的子 class.
是不可能的这在 lombok 1.18.2(及更高版本)中使用新的(实验性)注释 @SuperBuilder
是可能的。唯一的限制是层次结构中的每个 class 都必须具有 @SuperBuilder
注释。没有办法将 @SuperBuilder
放在所有 subclasses 上,因为 Lombok 在编译时无法知道所有 subclasses。
有关详细信息,请参阅 lombok documentation。
示例:
@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();