首页 > 解决方案 > 将 lombok @Value、@NoArgsConstructor、@AllArgsConstructor 放在一起

问题描述

我在一个类上使用 lombok 注释:

@Value
@NoArgsConstructor
@AllArgsConstructor
public class TestClass implements Serializable {

    private String x;
    private String y;
    private String z;

}

我需要@Value,因为我希望字段是不可变的,而构造函数注释作为我正在使用的 ORM 框架既需要无参数构造函数,也需要用于初始化字段的构造函数。

但是 IntelliJ 将此标记为错误,说明需要初始化字段,而我们有一个由 lombok 定义的 noarg 构造函数。

如何解决这个问题?

标签: intellij-idealombok

解决方案


使用@Value,lombok 将所有字段标记为final,没有默认值,@NoArgsConstructor将导致字段从未初始化,这就是 IntelliJ 抱怨的原因。

你可以配置龙目岛

lombok.noArgsConstructor.extraPrivate=true

结果,@NoArgsConstructor将生成具有默认值的承包商。可以使用 设置默认值@FieldDefaults

查看文档: @Value @FieldDefaults


推荐阅读