Java 在构造函数注释中使用生成器(lombok)时出错
出现以下错误:Java 在构造函数注释中使用生成器(lombok)时出错,java,spring,lombok,Java,Spring,Lombok,出现以下错误: @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 c
@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;
}
}
当我把builderMethodName=b这个参数放在@BuilderSpecial构造函数中时,它就可以正常工作了
我不知道为什么第一个代码会出错。
请帮帮我。
谢谢@Builder在这两个类中创建一个静态方法生成器;它返回相应生成器的实例。但是这些方法的返回类型是不兼容的,因为SpecialBuilder和CommonBuilder是不同的和不相关的类:@ Builder没有,也不能从技术上考虑类之间的继承关系。因此编译器抱怨两个方法名称相同,没有参数,但返回类型不同。这在Java中是不可能的
要解决此问题,您有两种选择:
在两个类上都使用@SuperBuilder@SuperBuilder设计用于继承
正如您已经发现的,您可以在其中一个类中重命名该方法
@生成器在两个类中创建静态方法生成器;它返回相应生成器的实例。但是这些方法的返回类型是不兼容的,因为SpecialBuilder和CommonBuilder是不同的和不相关的类:@ Builder没有,也不能从技术上考虑类之间的继承关系。因此编译器抱怨两个方法名称相同,没有参数,但返回类型不同。这在Java中是不可能的
要解决此问题,您有两种选择:
在两个类上都使用@SuperBuilder@SuperBuilder设计用于继承
正如您已经发现的,您可以在其中一个类中重命名该方法
谢谢你分享你的知识!谢谢你分享你的知识!
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
@Builder(builderMethodName = "b")
public Special(String common1, String common2, String special1) {