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

Lombok@Builder继承解决方案

马庆
2023-03-14

Lombok@builder不适用于继承用例:

class Foo{
 protected int xyz1;
 .....
 protected String xyz7;
}


class Bar extends Foo{

}
  1. 手动创建条形图的构造函数
  2. 将生成器批注放在该构造函数上。

有更好的变通办法吗?

共有1个答案

惠文彬
2023-03-14

Lombok在版本:1.18.2中引入了用于构建器注释所面临的继承问题的实验性特性,并且可以通过@superbuilder注释解决,如下所示。

@SuperBuilder
public class ParentClass {
    private final String a;
    private final String b;
}

@SuperBuilder
public class ChildClass extends ParentClass{
    private final String c;
}

现在,可以如下所示使用Builder类(这在@Builder注释中是不可能的)

ChildClass.builder().a("testA").b("testB").c("testC").build();
 类似资料:
  • 我试图在不创建任何构造函数的情况下链接几个@Value@非最终类。 期望lombok选择生成一个构造函数,用所有匹配的参数调用super。 有没有办法做到这一点?它似乎出现了一个毫无意义的错误,因为父类有注释给出的构造函数。我用不同文件中的类尝试了这个方法,同样的行为。 例子: 错误:(12,5)java:TestLombok类中的构造函数A。A不能应用于给定的类型;必修课:java。找到整型:无

  • 从2.7.0开始,SpringFox Swagger不支持继承: https://github.com/springfox/springfox/issues/1983 我有一个应用程序,它依赖于swagger支持继承这一事实,但仍然需要将库更新到2.8.0版本。 真的有可能以某种方式(甚至是肮脏的方式)为继承提供向后兼容性吗? 真的非常感谢任何帮助,谢谢

  • 我想在更深层次的继承中为一个类实现构建器模式,其中一些字段是强制性的(message,case),而一些字段是可选的(myOptField1,MyOptField2…)通过使用Lombok@Builder并假设父类不能更改。因此,我实现了自己的builder(),如下所示: 那么这个类的使用方式可以是: 在IntelliJ的想法中,一切似乎都很好,但我得到了编译错误: 因此编译器只能看到由Lomb

  • 错误是... 关于继承和@EqualSandHashCode以及Lombok有没有我正在滥用的最佳实践?或者有什么办法?

  • 我在我的多模块maven项目中面临Lombok的问题。我有两个类: 还有一个父maven项目,其中定义了lombok依赖项。还有一个子maven项目,其中我将父项目定义为maven父项目。 当我在 类中使用生成的实例时,会发生编译错误: 我可以通过两种方式解决问题: < li >我自己手工创建了一个名为“log”的私有字段。 < li >我在子maven项目中定义了Lombok依赖项。 为什么这样

  • 请建议应用继承时如何使用。 我有一个抽象类和具体的。应该是不可变的。将放在两者上会导致两个错误: null 我很乐意删除并使用构建器方法,但我正在重构一个公共库(试图优化模型类),我不希望在我的客户端上出现编译错误。 我还发现了解释第二个错误的这个问题。但其意图的逻辑并不清楚https://github.com/rzwitserloot/lombok/issues/945