将 lombok @Value、@NoArgsConstructor、@AllArgsConstructor 放在一起
To have lombok @Value, @NoArgsConstructor, @AllArgsConstructor together
我在 class:
上使用 lombok 注释
@Value
@NoArgsConstructor
@AllArgsConstructor
public class TestClass implements Serializable {
private String x;
private String y;
private String z;
}
我需要@Value,因为我希望字段是不可变的,而构造函数注释作为我正在使用的 ORM 框架需要无参数构造函数以及用于初始化字段的构造函数。
但是 IntelliJ 将其标记为需要初始化的错误说明字段,而我们有一个由 lombok 定义的 noarg 构造函数。
如何解决这个问题?
为什么不用您想要的默认值定义无参数构造函数?
@Value
@AllArgsConstructor
public class TestClass implements Serializable {
private String x;
private String y;
private String z;
TestClass() {
x = "";
y = "";
z = "";
}
}
使用 @Value
,lombok 将所有字段标记为 final
,没有默认值,@NoArgsConstructor
将导致字段从未初始化,这就是 IntelliJ 抱怨的原因。
您可以使用
配置 lombok
lombok.noArgsConstructor.extraPrivate=true
因此,@NoArgsConstructor
将生成具有默认值的承包商。默认值可以设置为 @FieldDefaults
.
查看文档:
@Value
@FieldDefaults
我在 class:
上使用 lombok 注释@Value
@NoArgsConstructor
@AllArgsConstructor
public class TestClass implements Serializable {
private String x;
private String y;
private String z;
}
我需要@Value,因为我希望字段是不可变的,而构造函数注释作为我正在使用的 ORM 框架需要无参数构造函数以及用于初始化字段的构造函数。
但是 IntelliJ 将其标记为需要初始化的错误说明字段,而我们有一个由 lombok 定义的 noarg 构造函数。
如何解决这个问题?
为什么不用您想要的默认值定义无参数构造函数?
@Value
@AllArgsConstructor
public class TestClass implements Serializable {
private String x;
private String y;
private String z;
TestClass() {
x = "";
y = "";
z = "";
}
}
使用 @Value
,lombok 将所有字段标记为 final
,没有默认值,@NoArgsConstructor
将导致字段从未初始化,这就是 IntelliJ 抱怨的原因。
您可以使用
配置 lomboklombok.noArgsConstructor.extraPrivate=true
因此,@NoArgsConstructor
将生成具有默认值的承包商。默认值可以设置为 @FieldDefaults
.
查看文档: @Value @FieldDefaults