[英]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.