【发布时间】:2020-08-22 13:59:15
【问题描述】:
这可能是一个初学者的问题,但我很困惑。
我有 3 个班级,如下所示。在这种情况下如何使用 lombok 的 @Builder 注释。
尝试执行以下代码时,我在 C 类中遇到错误。
如果父类 Class B 也有 @Builder 注释,那么 Class C 会起作用吗?
我收到一个错误:- 错误:java:ClassC 中的 builder() 无法隐藏 ClassB 返回类型中的 builder() ClassCBuilder 与 ClassBBuilder 不兼容
C类:
import lombok.Builder;
public class C extends B {
private String fieldC;
@Builder
public C(String fieldC, String fieldB, String fieldA) {
super(fieldB, String fieldA);
this.fieldC = fieldC;
}
}
B类:
import lombok.Builder;
public class B extends A {
private String fieldB;
@Builder
public B(String fieldB, String fieldA) {
super(fieldA);
this.fieldB = fieldB;
}
}
A类:
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
public abstract class A {
private String fieldA;
}
【问题讨论】:
-
我想为 C 类扩展 B 类和 B 类扩展抽象 A 类的类生成构建器。这样当我使用 C 类时,我应该可以访问所有 3 个中的所有字段来自构建器的类
-
B 类能够使用 A 类的公共构造函数访问私有字段“fieldA”。是否可以在不公开“fieldA”的情况下让 C 类也访问“fieldA”?
-
给定的代码工作正常。我不知道为什么我最初收到错误。可能是编译问题