gpt4 book ai didi

java - 父类中的构造函数父级不能应用于给定类型错误

转载 作者:行者123 更新时间:2023-12-02 09:51:48 25 4
gpt4 key购买 nike

我想扩展一个父类:

@Getter
@Builder
public class Parent {

@Builder.default
private final int maxCats = 1;

@NonNull
private final String catName;
}

我将按如下方式进行,

@Getter
@ToString
@Builder
public class child extends Parent{

@Builder.default
private final int maxCats = 100;

@NonNull
private final String catName;

@Builder.Default
private final int maxDogs = 500;
}

当我构建包时,我收到以下错误:

error: constructor Parent in class Parent cannot be applied to given types;
[javac] @Builder
[javac] ^
[javac] required: int,String
[javac] found: no arguments
[javac] reason: actual and formal argument lists differ in length

谁能帮我找出错误的原因吗?

P.S: 父类不应被修改。

最佳答案

@Builder 不适用于继承。它使用生成的构造函数,该构造函数始终调用父类(super class)的默认构造函数。您的情况不存在这种情况。

如果您可以使用实验性功能,请尝试@SuperBuilder。但是,您需要在两个类上都使用该注释,因此无法避免修改 Parent。此外,IntelliJ 尚不支持 @SuperBuilder

或者,您可以编写一个手动构造函数,将所有字段作为参数(也包括来自父类(super class)的字段),然后在其上放置 @Builder 。 (注意:在这种情况下避免使用 @Builder.Default,因为它会删除字段初始值设定项。)

关于java - 父类中的构造函数父级不能应用于给定类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56277167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com