【发布时间】:2021-05-22 10:26:54
【问题描述】:
我有这样的类层次结构:
@Data
@SuperBuilder
public abstract class Parent1 {
Long id;
}
@Data
@SuperBuilder
public abstract class Parent2 extends Parent1 {
String name;
// Customized Lombok's builder
public abstract static class Parent2Builder<C extends Parent2, B extends Parent2Builder<C, B>> {...}
}
@Data
@SuperBuilder
public class Child extends Parent2 {
//some fields and methods
}
当 Parent1 和 Parent2 与 Lombok 的自定义构建器作为一个类(具有 2 个字段的父级)时,一切正常。但是我不得不将一个类分成两个不同的类,并在编译时出现下一个错误: Parent2.java:错误:方法没有覆盖或实现超类型@SuperBuilder中的方法
我不知道我没有实现哪个方法。
附:我在另一个包中也有相同的类层次结构(但没有自定义构建器),根本没有错误。
【问题讨论】:
-
我不确定这是否是您正在寻找的解决方案,但如果我定义
public abstract static class Parent2Builder<C extends Parent2, B extends Parent2Builder<C, B>> extends Parent1.Parent1Builder<C, B> {...},它对我有用。 --- 备注:您可以添加@EqualsAndHashCode(callSuper = true)totParent2和Child。 -
似乎这正是我正在寻找的解决方案 :) 我已将 extends Parent1.Parent1Builder
{...} 添加到我的自定义构建器中,并且此解决方案有效。非常感谢 -
在自定义
@SuperBuilder时,您应该真正使用delombok。 Eclipse 大纲中的 C&P 不起作用。由于大量使用泛型,类定义非常复杂,几乎不可能手动正确地得到它们。