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

Java Lombok库:继承的生成器注释问题

颛孙哲
2023-03-14

Java Lombok库:继承的生成器注释问题

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

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

创建子类的实例时,父类属性在生成器注释中不可见。

以下失败:

     ChildClass.builder().a("testA").b("testB").c("testC").build();

然而,下面的说法是正确的:

     ChildClass.builder().c("testC").build();

似乎这个问题已经存在很长时间了,不知道最新版本是否有任何修正。

共有2个答案

陈斌
2023-03-14

问题是,当您使用@Builder注释定义ParentClass时,它会创建ParentClass(String)构造函数并删除隐式构造函数。然后甚至不能创建子类请看下面的答案:如何在Lombok中调用超级构造函数

商飞翮
2023-03-14

最新的lombok版本1.18.2包括新的实验性的@SuperBuilder。它就是为了这个目的而添加的:从超类设置字段。

 类似资料:
  • 本文向大家介绍Java继承的注释,包括了Java继承的注释的使用技巧和注意事项,需要的朋友参考一下 示例 默认情况下,类注释不适用于扩展它们的类型。可以通过将@Inherited注释添加到注释定义中来更改 示例 请考虑以下2个注释: 和 如果这样注释了三个类: 运行此代码 将打印与此类似的结果(取决于注释的包): 请注意,注释只能从类继承,而不能从接口继承。

  • 如何使用注释在Spring中提供bean继承?在XML配置中,我使用了

  • 问题内容: 我的对象层次结构随着继承树的加深而增加了复杂性。这些都不是抽象的,因此,它们的所有实例都或多或少地达到了目的。 由于参数数量很多,我想使用“构建器模式”来设置属性,而不是对多个构造函数进行编码。由于我需要适应所有排列,因此继承树中的叶类将具有伸缩构造函数。 当我在设计过程中遇到一些问题时,我已经浏览了这里的答案。首先,让我给您一个简单的,简短的示例来说明问题。 现在我们有一些代码可以继

  • 问题内容: 我想将一个Web服务URL请求表示为一个对象,并发现在继承层次结构中可能有很多通用参数。一个请求可以有很多参数,一些是必选参数,而其他是可选参数,我相信Bloch的Builder模式是一个不错的选择,它可以使用流畅的接口模拟命名参数。 具体来说,我正在设计Google Maps网络服务API,该API具有常规的网络服务请求 和是必填参数,也是必填参数。还有一个可选参数。 每个服务都有其

  • 我能以某种方式将一组注释分组到一个抽象类上,并且每个扩展该类的类都自动分配了这些注释吗? 至少以下内容不起作用:

  • 问题内容: 使用基于注释的配置(等)是否可以实现相同的bean继承? http://docs.spring.io/spring/docs/4.1.0.BUILD-SNAPSHOT/spring-framework- reference/htmlsingle/#beans-child-bean- definitions 问题答案: java config中没有抽象bean的概念,因为Java语言已经