获取企业版 Lombok
@Accessors
用于 getter 和 setter 的更流畅的 API。
@Accessors
在 lombok v0.11.0 中作为实验功能引入。
Experimental
实验性的,因为:- 我们可能希望将这些功能整合到更完整的属性支持概念中。
- 新功能 - 请求社区反馈。
- 打开功能请求:以小写字母后跟大写字母开头的属性的命名行为。一半的规范、工具和 lombok 用户更喜欢名为
uLimit
intogetULimit
(包括 lombok)的字段,而另一半则更喜欢getuLimit
.@Accessors
可能涉及解决此请求的任何更新。 - 开放功能请求:对命名访问器的更多控制;例如解决创造性命名的布尔属性:
boolean wasRunning
变成boolean wasRunning()
而不是boolean isWasRunning()
,以及更广泛的前缀支持。@Accessors
如果此功能请求得到解决,将涉及。 @Accessors
目前没有从字段@Accessors
注释“级联”到类级@Accessors
注释,但它确实“级联”到lombok.config
. 改变这一点并不困难,但向后不兼容。它不太可能破坏很多现有代码,但这需要在功能退出实验状态之前做出决定。
Overview
@Accessors
注解用于配置 lombok 如何生成和查找 getter 和 setter 。
默认情况下,lombok 遵循getter 和 setter的bean 规范pepper
:例如,字段名称的getter getPepper
。然而,有些人可能想打破bean 规范,以便最终得到更好看的 API。@Accessors
让你这样做。
一些程序员喜欢在他们的字段中使用前缀,即他们写fPepper
而不是pepper
. 我们强烈反对这样做,因为您无法对前缀的有效性进行单元测试,并且重构脚本可能会将字段转换为局部变量或方法名称。此外,如果您希望此信息立即可见,您的工具(例如您的编辑器)可以以某种方式呈现标识符。不过,您也可以列出项目使用的前缀 via @Accessors
。
@Accessors
因此有 3 个选项:
-
fluent
– 一个布尔值。如果为true,则 getter 为pepper
justpepper()
,而 setter 为pepper(T newValue)
。此外,除非指定,否则chain
默认为true。
默认值:假。 -
chain
– 一个布尔值。如果为true,则生成的 setter 返回this
而不是void
。
默认值:false,除非fluent=true
,然后默认值:true。 -
prefix
– 字符串列表。如果存在,字段必须以这些前缀中的任何一个作为前缀。依次将每个字段名称与列表中的每个前缀进行比较,如果找到匹配项,则去除前缀以创建字段的基本名称。在列表中包含一个空字符串是合法的,它将始终匹配。对于字母字符,前缀后面的字符不能是小写字母,即pepper
即使与 prefix 也不匹配p
,但pEpper
会匹配(并且意味着该字段的基本名称是epper
)。
@Accessors
注解在类型和字段上是合法的
;如果存在,则应用的注释是字段上的注释,否则是类上的注释。当@Accessors
字段上的注释存在时,该字段所在的类上也存在的任何@Accessors
注释都将被完全忽略,即使对于未在该字段上配置的属性也是如此@Accessors
。这与在未指定任何显式注释
lombok.config
时用作回退默认值的任何配置键形成对比。@Accessors
With Lombok
import lombok.experimental.Accessors;
|
Vanilla Java
public class AccessorsExample {
|
Supported configuration keys:
-
lombok.accessors.chain
= [true
|false
](默认值:假) -
如果设置为
true
,则任何没有@Accessors
注解或有注解但该注解没有chain
参数的显式值的类都将表现得好像@Accessors(chain = true)
存在一样。 -
lombok.accessors.fluent
= [true
|false
](默认值:假) -
如果设置为
true
,则任何没有@Accessors
注解或有注解但该注解没有fluent
参数的显式值的类都将表现得好像@Accessors(fluent = true)
存在一样。 -
lombok.accessors.prefix
+=字段前缀(默认:空列表) -
这是一个列表属性;可以使用
+=
运算符添加条目。可以使用-=
操作符删除从父配置文件继承的前缀。任何没有@Accessors
注释的类,或者有注释但该注释没有prefix
参数的显式值的任何类都将表现得好像存在一样。@Accessors(prefix = {prefixes listed in configuration})
-
lombok.accessors.flagUsage
= [warning
|error
](默认:未设置) -
如果配置,Lombok 会将任何使用标记
@Accessors
为警告或错误。
Small print
最近的@Accessors
注解也用于 lombok 中查找 getter 的各种方法,例如@EqualsAndHashCode
.
如果提供了前缀列表并且某个字段不是以其中一个开头,则 lombok 会完全跳过该字段,并会生成警告。