当前位置: 首页 > 知识库问答 >
问题:

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

松钊
2023-03-14

大家好,overflow社区,我正在努力解决Lombok的继承问题。我试图在子类上添加注释@allargsconstuctor@noargsconstuctor,以便使用父lombok构造函数,但出现了错误“复制方法child()”。

父类:

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

儿童班:

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

错误消息:

重复方法Java类型中的孩子()(67109219)

感谢@rentox98的回复,我知道我的子类上的ArgsConstructor总是空的,这会导致两个相同的构造函数。

有没有Lombok方法可以基于父Lombok Args构造函数在我的子类上生成Args构造函数?

共有1个答案

曾永新
2023-03-14

在你的子类中,你没有属性,所以@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));
    }
}
 类似资料:
  • 问题内容: 我有一个“ ChildClass”类,它扩展了“ ParentClass”类。我不想完全替换父类的构造函数,而是要先调用父类的构造函数,然后再做一些额外的工作。 我相信默认情况下会调用父类的0参数构造函数。这不是我想要的 我需要用参数调用构造函数。这可能吗? 我试过了 但这不起作用,因为您无法修改“ this”。 问题答案: 您可以从子代的构造函数中以“ super”引用父代的构造函数

  • 我有一个父类,其中包含构造函数注入的依赖项: 如果我从这个类继承,我总是需要重新定义一个调用父构造函数的构造函数吗? 使用 setter 注入,我似乎能够将依赖项保留在父类中,而不需要在子类中重新连接它,如果子类不接触链接到依赖项的功能,这对我来说听起来不错: 看起来,如果我想避免重复自动装配代码和处理子组件中的依赖关系,我只能使用setter或field injection来实现。 是否有更简洁

  • 问题内容: 编译该程序时,出现错误- 错误-找不到构造函数Person()。为什么定义Person()是必要的? 问题答案: 创建时,您要同时创建一个。为了确保构造正确,编译器在构造函数中添加了一个隐式调用: 由于没有无参数构造函数,因此失败。 您可以通过以下任一方式解决它 添加对super的显式调用,如下所示: } 或通过将no-arg构造函数添加到: } 通常,编译器还会隐式添加无参数构造函数

  • 题目说明了一切,我得到了一个类,其中构造函数的变量必须是私有的。 当然,它附带了变量的公共。 现在问题就在我尝试制作一个名为 Magazine 的子类之后。该类应继承名称和价格,但对于每个对象启动,价格都是恒定的。所以它们不会作为名称出现在构造函数上。 这也带有它自己的。 我试图将价格放在构造函数中,但构造函数需要一个传递的参数。使用还会通知父构造函数中没有一个具有这样的形状。 当我尝试使用父类方

  • 我在Java有一个简单的亲子实现。父类看起来像: 和子类类似于: 当我打电话的时候 我希望BasePage构造函数也能运行并设置配置数据。但BasePage构造函数根本不运行。我不明白为什么。有人能告诉我为什么吗?谢谢.

  • 我有一个抽象的超类,它有一个形式的构造函数 并希望创建该抽象类的一个子类,该子类不是以字符串作为其第一个参数,而是采用一个表示给定字符串名称的整数值,例如,0代表某个字符串,1代表另一个字符串,依此类推。 当我尝试编写窗体子类(int number,int amount)的构造函数时,我得到一个格式为“Implicit super constructor is undefined.必须显式调用另一