父构造函数子类上的 NoArgsConstructor 和 AllArgsConstructor 注释

Cec*_*de. 0 java inheritance lombok

溢出社区大家好,我正在努力解决 Lombok 的继承问题。我试图在子类上添加注释@AllArgsConstructor@NoArgsConstructor以便使用父 lombok 构造函数,但收到错误"Duplicate method Child()"

家长班级:

@ToString
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class Parent {
    private String propertyA;
    private String propertyB;
}
Run Code Online (Sandbox Code Playgroud)

儿童班:

@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class Child extends Parent {
    @Override
    public void setPropertyA(String propertyA) {
        this.propertyA(StringUtils.upperCase(propertyA));
    }
}
Run Code Online (Sandbox Code Playgroud)

错误信息:

Java Child 类型中存在重复的 Child() 方法 (67109219)

感谢@rentox98的回复,我了解到我的子类上的 ArgsConstructor 始终为空,从而产生两个相同的构造函数。

有没有一种 Lombok 方法可以根据父 lombok ArgsConstructors 在我的子类上生成 ArgsConstructors ?

ren*_*x98 6

在您的 Child 类中,您没有属性,因此@NoArgsConstructor@AllArgsConstructor是相同的,并且会发生错误。


如果您想要一个将属性传递给父类的全参数构造函数的全参数构造函数,您必须自己编写它;Lombok 不会生成它。

@SuperBuilder
@NoArgsConstructor
public class Child extends Parent {
    public Child(String propertyA, String propertyB) {
        super(StringUtils.upperCase(propertyA), propertyB);
    }
    
    @Override
    public void setPropertyA(String propertyA) {
        this.propertyA(StringUtils.upperCase(propertyA));
    }
}
Run Code Online (Sandbox Code Playgroud)