Xi *_*hui 9 java constructor pojo javabeans lombok
我有一个超级类和子类:
@Data
@AllArgsConstructor
public class Parent {
private String name;
}
Run Code Online (Sandbox Code Playgroud)
@Data
public class Child extends Parent {
private int age;
// I want Lombok to create an equivalent constructor.
public Child(String name, int age) {
super(name);
this.age = age;
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用 Lombok 注释来帮助我创建子类构造函数?
提前致谢 :)
从 lombok 版本开始,1.18.2您可以使用注释@SuperBuilder。
@Data
@AllArgsConstructor
@SuperBuilder
public class Parent {
private String name;
}
@Data
@SuperBuilder
public class Child extends Parent {
private int age;
}
Run Code Online (Sandbox Code Playgroud)
请记住,注释需要同时位于父类和子类中。
然后你可以用它作为Child child = Child.builder().age(1).name("Mike").build()
正如文档中所写
@SuperBuilder 在类上生成一个受保护的构造函数,该构造函数将构建器实例作为参数。此构造函数将新实例的字段设置为构建器中的值。
官方文档
正如文档中所解释的,这并不能完全生成问题所要求的内容,
public Child(String name, int age) {
super(name);
this.age = age;
}
Run Code Online (Sandbox Code Playgroud)
但它创建了一个构造函数,该构造函数将构建器作为参数,并从该构建器及其包含的参数继续实例化父类和子类中的两个字段。但这是 lombok 唯一可能的解决方案,即使用子类中的构造函数来实例化父类和子类中的字段。
请记住,这是 4 年前作为实验性功能添加的,它仍然是 lombok 的一部分。
| 归档时间: |
|
| 查看次数: |
7362 次 |
| 最近记录: |