我有一个超级班和子班:
@Data
@AllArgsConstructor
public class Parent {
private String name;
}
@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;
}
}
如何使用 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;
}
请记住,注释需要同时位于父类和子类中。
然后您可以将其用作
Child child = Child.builder().age(1).name("Mike").build()
如文档中所写
@SuperBuilder 在类上生成一个受保护的构造函数 将构建器实例作为参数。这个构造函数设置了 新实例的字段到构建器的值。
官方文档
正如文档中所解释的,这并不完全生成问题所要求的内容,
public Child(String name, int age) {
super(name);
this.age = age;
}
但它创建了一个构造函数,该构造函数将构建器作为参数,并从该构建器及其包含的参数开始实例化父类和子类中的两个字段。但这是 lombok 唯一可能的解决方案,即使用子类中的构造函数来实例化父类和子类中的字段。
请记住,这是 4 年前作为实验性功能添加的,它仍然是 lombok 的一部分。