java - Setter 注释在 Java 类中不起作用
问题描述
我的工作区结构如下:
package1
Class A
package 2
Class B
A 类添加了所有注释:
@Getter
@Setter
@Value
@Data
@ToString
@Builder
class A {
int a,
int b
}
但是,当我尝试A.setA(1)
在 BI 类中使用时,会出现 setA 不是定义的函数的错误。
我在配置中包含了以下依赖项:
LombokUtils = 1.1;
Lombok = 1.16.x;
不知道这里出了什么问题。@Setter
注释不起作用。
解决方案
@Getter
这告诉 lombok 制造吸气剂。但是,@Data
也这样做,@Value
也这样做。这个注释没有意义;去掉它。
@Setter
这告诉 lombok为所有非最终字段创建设置器(剧透:您的字段在这里是最终的,所以没有设置器)。但是,@Data
也这样做 - 这也意味着:为每个非最终字段创建一个 setter。这个注释没有意义;去掉它。
@Value
这告诉 lombok 使类成为 final,使所有字段成为 final,使所有字段成为私有,创建一个设置所有字段的构造函数,创建一个 toString,创建 getter,并创建 hashcode 和 equals 方法。
因为它使所有字段成为最终字段,所以@Setter
什么都不做。
@Data
你不应该用 Data 和 Value 来注释一个类:它们是相反的。如果您打算将这些字段设置为可设置,那么您正在寻找@Data
,而不是@Value
. 删除其中之一。
@ToString
Data 和 Value 都已经这样做了;这个注释没有意义;去掉它。
@Builder
这不是其他任何东西所暗示的,所以请保留它。
我很确定你想要:
@Data @Builder class Foo {
}
没有别的了。实际上,你有构建器,所以你可能想要一个不可变的类(所以,根本没有设置器 - 你构造了一个实例,然后它就不可更改),在这种情况下,你正在寻找@Value @Builder class Foo {}
.
推荐阅读
- git - 未能锁定 refs/heads/master 远程裸仓库
- excel - VBA ActiveCell 动态调整大小
- powershell - 解压缩在 PowerShell 中保留两个重复文件
- css - 响应式列表组项目从两列合二为一
- python - Django 与 SQL Server 上的数据库
- r - 月趋势的负二项式回归
- java - 如何调用仅接受字符串值作为请求正文参数的端点
- mongodb - 使用 $lookup 在 mongoose 中进行交叉集合查询
- angular - 在 vagrant VM 上运行 Angular 项目
- amazon-ec2 - AWS SES 设置 - 无法发送测试邮件