为了让lombok @Value, @NoArgsConstructor, @AllArgsConstructor一起使用。

问题描述 投票:0回答:1

我在一个类上使用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构造函数。

如何解决这个问题?

intellij-idea lombok
1个回答
1
投票

含有 @Value伦勃克人将所有领域标记为 final,没有默认值, @NoArgsConstructor 会导致字段从未被初始化,这就是为什么IntelliJ会抱怨。

你可以用以下方法配置lombok

lombok.noArgsConstructor.extraPrivate=true

因此, @NoArgsConstructor 将生成具有默认值的承包商。默认值可以用 @FieldDefaults.

参见文件。@价值@FieldDefaults


0
投票

为什么不直接用你想要的默认值定义无参数构造函数呢?

@Value
@AllArgsConstructor
public class TestClass implements Serializable {

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

    TestClass() {
        x = "";
        y = "";
        z = "";
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.