intellij-idea - 将 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 构造函数。
如何解决这个问题?
解决方案
使用@Value
,lombok 将所有字段标记为final
,没有默认值,@NoArgsConstructor
将导致字段从未初始化,这就是 IntelliJ 抱怨的原因。
你可以配置龙目岛
lombok.noArgsConstructor.extraPrivate=true
结果,@NoArgsConstructor
将生成具有默认值的承包商。可以使用 设置默认值@FieldDefaults
。
查看文档: @Value @FieldDefaults
推荐阅读
- generics - 如何设计一个可以对“Self:!Copy”和“Self=&mut[S]”进行操作的通用特征
- python - Pandas 使用 SSH 隧道和 sqlalchemy 从远程 Postgresql 读取
- sql - Rails 5 查询关联必须符合多个条件
- javascript - 如何处理JS中Hoisting引起的未定义错误
- azure - AKS 的 Velero 安装问题 - “获取备份存储时出错”
- r - R:从包含冗余的长 data.frame 创建宽 data.frame,而不创建列表
- javascript - PostgreSQL 查询到 Supbase 查询
- javascript - 防止表单重新提交 (EJS)
- javascript - 如何从 Json 对象中提取所有 URL
- python - 数学表达式到 lambda 函数