@Accessors
用于 getter 和 setter 的更流畅的 API。
@Accessors
在 lombok v0.11.0 中作为实验性功能引入。
lombok.config 选项 lombok.accessors.capitalization
= [basic
| beanspec
] 在 lombok v1.18.24 中添加。
功能变更:@Accessors
现在“级联”;任何未在字段级 @Accessors
注解上设置的选项将从类上的 @Accessors
注解继承(以及任何在这些注解上未设置的选项,从封闭类继承)。最后,在 lombok.config
中设置的任何内容都将用作默认值。(lombok v1.18.24)
新功能:@Accessors(makeFinal = true)
将创建 final
getter、setter 和 with-er。还有一个 lombok.config
键 lombok.accessors.makeFinal
具有相同的效果。(lombok v1.18.24)
实验性
实验性,因为- 我们可能希望将这些功能整合到更完整的属性支持概念中。
makeFinal
功能是最近发布的;正在等待社区反馈。
- 开放的功能请求:更多地控制访问器命名;例如,解决创造性命名的布尔属性:将
boolean wasRunning
转换为boolean wasRunning()
而不是boolean isWasRunning()
,以及更广泛的前缀支持。如果此功能 请求 得到解决,@Accessors
将会参与其中。 @Accessors
目前不会从字段@Accessors
注解“级联”到类级@Accessors
注解,但它会“级联”到lombok.config
。更改这一点并不困难,但会向后不兼容。它不太可能破坏太多现有代码,但这需要在该功能可以移出实验性状态之前决定。
概述
@Accessors
注解用于配置 lombok 如何生成和查找 getter、setter 和 with-er。
默认情况下,lombok 遵循 bean 规范 来生成 getter 和 setter:例如,名为 pepper
的字段的 getter 是 getPepper
。但是,有些人可能希望打破 bean 规范,以便最终得到外观更友好的 API。@Accessors
允许你这样做。
一些程序员喜欢为他们的字段使用前缀,即他们写 fPepper
而不是 pepper
。我们强烈不建议这样做,因为你无法单元测试你的前缀的有效性,并且重构脚本可能会将字段转换为局部变量或方法名称。此外,如果希望此信息立即可见,你的工具(例如你的编辑器)可以负责以某种方式呈现标识符。尽管如此,你也可以通过 @Accessors
列出你的项目使用的前缀。
@Accessors
有 4 个选项
-
fluent
– 一个布尔值。如果为 true,则pepper
的 getter 只是pepper()
,setter 是pepper(T newValue)
。此外,除非另有说明,否则chain
默认为 true。
默认值:false。 -
chain
– 一个布尔值。如果为 true,则生成的 setter 返回this
而不是void
。
默认值:false,除非fluent=true
,则默认值:true。 -
makeFinal
– 一个布尔值。如果为 true,则生成的 getter、setter 和 with-er 将标记为final
。
默认值:false。 -
prefix
– 字符串列表。如果存在,字段必须以这些前缀中的任何一个作为前缀。每个字段名依次与列表中的每个前缀进行比较,如果找到匹配项,则剥离前缀以创建字段的基本名称。在列表中包含空字符串是合法的,它将始终匹配。对于作为字母的字符,前缀后面的字符不能是小写字母,即pepper
即使对于前缀p
也不是匹配项,但pEpper
将是匹配项(并且意味着此字段的基本名称是epper
)。
@Accessors
注解在类型和字段上都是合法的;getter/setter/with-er 将首先查看字段上的注解,其次查看字段所在的类型上的注解(并且你有类型中的类型,每个外部类型也会被检查),最后对于任何未显式设置的属性,将使用相应的 lombok.config
设置。
使用 Lombok
import lombok.experimental.Accessors;
|
原生 Java
public class AccessorsExample {
|
支持的配置键
-
lombok.accessors.chain
= [true
|false
] (默认值: false) - 如果设置为
true
,则任何没有@Accessors
注解的字段/类,或者有注解但该注解没有为chain
参数显式赋值的字段/类,都将表现得好像存在@Accessors(chain = true)
一样。 -
lombok.accessors.fluent
= [true
|false
] (默认值: false) - 如果设置为
true
,则任何没有@Accessors
注解的字段/类,或者有注解但该注解没有为fluent
参数显式赋值的字段/类,都将表现得好像存在@Accessors(fluent = true)
一样。 -
lombok.accessors.makeFinal
= [true
|false
] (默认值: false) - 如果设置为
true
,则任何没有@Accessors
注解的字段/类,或者有注解但该注解没有为makeFinal
参数显式赋值的字段/类,都将表现得好像存在@Accessors(makeFinal = true)
一样。 -
lombok.accessors.prefix
+= 字段前缀 (默认值: 空列表) - 这是一个列表属性;可以使用
+=
运算符添加条目。可以使用-=
运算符删除从父配置文件继承的前缀。任何没有@Accessors
注解的类,或者有注解但该注解没有为prefix
参数显式赋值的类,都将表现得好像存在@Accessors(prefix = {配置中列出的前缀})
一样。 -
lombok.accessors.capitalization
= [basic
|beanspec
] (默认值: basic) - 控制如何大写
uShaped
(一个小写字母后跟一个大写/首字母大写字母)等棘手情况。basic
将其大写为getUShaped
,而beanspec
将其大写为getuShaped
。
两种策略都在 Java 生态系统中常用,尽管beanspec
更常见。 -
lombok.accessors.flagUsage
= [warning
|error
] (默认值: 未设置) - 如果配置了,Lombok 将把任何
@Accessors
的使用标记为警告或错误。
小字号声明
最近的 @Accessors
注解也用于 lombok 中查找 getter 的各种方法,例如 @EqualsAndHashCode
。
如果提供了前缀列表,并且字段不是以其中一个前缀开头,则 lombok 将完全跳过该字段,并会生成警告。