[英]Error while use builder(lombok) in constructor annotation
@Data
@Builder
public static class Common {
private String common1;
private String common2;
}
@Getter
public static class Special extends Common {
private String special1;
@Builder
public Special(String common1, String common2, String special1) {
super(common1, common2);
this.special1 = special1;
}
}
发生以下错误:
Error:(149, 9) java: builder() in com.example.home.ExampleDTO.Special cannot override builder() in com.example.home.ExampleDTO.Common
return type com.example.home.ExampleDTO.Special.SpecialBuilder is not compatible with com.example.home.ExampleDTO.Common.CommonBuilder
当我把( builderMethodName = "b"
)这个参数放在@Builder(Special constructor)
它工作正常。
@Builder(builderMethodName = "b")
public Special(String common1, String common2, String special1) {
我不知道为什么第一个代码会出错。 请帮帮我。 谢谢
@Builder
在两个类中都创建了一个静态方法builder()
; 它返回相应构建器的实例。 但是方法的返回类型不兼容,因为SpecialBuilder
和CommonBuilder
是不同CommonBuilder
相关的类: @Builder
没有(并且技术上不能)考虑类之间的继承关系。 所以编译器抱怨两个方法同名,没有参数,但返回类型不同。 这在 Java 中是不可能的。
要解决这个问题,您有两个选择:
在两个类上使用@SuperBuilder
。 @SuperBuilder
旨在与继承一起使用。
正如您已经发现的那样,您可以在其中一个类中重命名该方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.