parent 构造函数的 Child class 上的 NoArgsConstructor 和 AllArgsConstructor 注释

NoArgsConstructor and AllArgsConstructor annotation on Child class for parent constructors

溢出社区大家好,我正在努力解决 Lombok 的继承问题。我正在尝试在 child class 上添加注释 @AllArgsConstructor@NoArgsConstructor 以使用 parent lombok 构造函数但出现错误 "重复方法 Child()".

Parent class:

@ToString
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class Parent {
    private String propertyA;
    private String propertyB;
}

Child class:

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

错误信息:

Duplicate method Child() in type Child Java(67109219)

感谢 回复,我了解到 child class 上的 ArgsConstructor 始终为空,导致两个相同的构造函数。

是否有一种 Lombok 方法可以基于 parent lombok ArgsConstructors 在我的 child class 上生成 ArgsConstructors?

在你的Childclass中你没有属性,所以@NoArgsConstructor@AllArgsConstructor是一样的,所以出现错误。


如果您想要一个 all-args 构造函数将属性传递给 parent class 的 all-args 构造函数,您必须自己编写; 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));
    }
}