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) {