繁体   English   中英

如何使用Lombok创建调用超级class的AllArgsConstructor的构造函数?

[英]How to use Lombok to create a constructor that calls AllArgsConstructor of super class?

我有一个超级 class 和孩子 class:

@Data
@AllArgsConstructor
public class Parent {

    private String name;

}
@Data
public class Child extends Parent {

    private int age;

    public Child(String name, int age) {
        super(name);
        this.age = age;
    }

}

如何使用 Lombok 注释来帮助我创建子 class 构造函数?

提前致谢:)

从 lombok 版本1.18.2开始,您可以使用@SuperBuilder注释。

@Data
@AllArgsConstructor
@SuperBuilder
public class Parent {

    private String name;

}
@Data
@SuperBuilder
public class Child extends Parent {

    private int age;
}

请记住,注释需要同时位于父 class 中。

然后您可以将其用作Child child = Child.builder().age(1).name("Mike").build()

正如文档中所写

@SuperBuilder 在 class 上生成一个受保护的构造函数,该构造函数将构建器实例作为参数。 此构造函数将新实例的字段设置为来自构建器的值。

官方文档

正如文档中所解释的,这并不能完全生成问题所要求的内容,

          public Child(String name, int age) {
            super(name);
            this.age = age;
        }

但是它创建了一个构造函数,该构造函数将构建器作为参数,并且从该构建器及其包含的参数继续实例化父 class 中的两个字段。 但这是 lombok 唯一可能的解决方案,即使用子 class 的构造函数来实例化父 class 中的字段。

请记住,这是 4 年前作为实验性功能添加的,它仍然是 lombok 的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM