我在一个类上使用lombok注解,我需要@Value,因为我希望字段是不可变的,而构造函数注解,因为我使用的ORM框架需要无arg构造函数以及构造函数来初始化字段。
@Value
@NoArgsConstructor
@AllArgsConstructor
public class TestClass implements Serializable {
private String x;
private String y;
private String z;
}
我需要@Value,因为我希望字段是不可变的,而且我使用的ORM框架需要一个no arg构造函数和初始化字段的构造函数。
但是IntelliJ标记为错误,说明字段需要被初始化,而我们的lombok定义了一个noarg构造函数。
如何解决这个问题?
含有 @Value
伦勃克人将所有领域标记为 final
,没有默认值, @NoArgsConstructor
会导致字段从未被初始化,这就是为什么IntelliJ会抱怨。
你可以用以下方法配置lombok
lombok.noArgsConstructor.extraPrivate=true
因此, @NoArgsConstructor
将生成具有默认值的承包商。默认值可以用 @FieldDefaults
.
参见文件。@价值@FieldDefaults
为什么不直接用你想要的默认值定义无参数构造函数呢?
@Value
@AllArgsConstructor
public class TestClass implements Serializable {
private String x;
private String y;
private String z;
TestClass() {
x = "";
y = "";
z = "";
}
}