使用Lombok,是否可以指定一个arg构造函数?
我的目的是使用Lombok注释创建一个构造函数,如下面的构造函数。
class MyClass {
private String param;
private Integer count;
public MyClass(String param) {
this.param = param;
}
}
答案 0 :(得分:11)
Lombok不允许您准确指定字段,但有3个注释可供选择。与
@RequiredArgsConstructor class MyClass {
private final String param;
private Integer count;
}
你可以得到它。如果参数未初始化为内联且final
或@NonNull
,则必需 。
答案 1 :(得分:10)
我在文档中找不到
这个怎么样:http://projectlombok.org/features/Constructor.html?
您必须初始化所有不应该是构造函数的变量。
@RequiredArgsConstructor为每个需要特殊处理的字段生成一个带有1个参数的构造函数。所有未初始化的final字段都会获得一个参数,以及标记为@NonNull的任何字段,这些字段在声明它们时未初始化。对于标有@NonNull的字段,还会生成显式空检查。
所以下面应该创建一个参数(param
)构造函数:
@RequiredArgsConstructor class MyClass {
private String param;
private Integer count = -1;
}
答案 2 :(得分:7)
@RequiredArgsConstructor
和@NonNull
是解决上述问题的两个重要键。因为@RequiredArgsConstructor
创建的构造函数带有用@NonNull
注释进行注释的字段。
@RequiredArgsConstructor
class MyClass {
@NonNull
private String param;
private Integer count;
}
这等效于:
class MyClass {
private String param;
private Integer count;
public MyClass(String param) {
this.param = param;
}
}