https://blog.csdn.net/cc_smile0702/article/details/73521878
Accessors
文档翻译,为了看懂兵哥的代码,以及试试能不能达到翻译的信达雅。估计不可能。
Accessors注解
一个为getter和setter设计的更流畅的API
实验性(experimental)
lombok中有experimental的包
实验性因为:
- 我们可能想将这些特性和更完全的性质支持概念融为一体(普通话:这些性能还在研究)
- 新特性-需要社区反馈
目前的状态:positive。目前我们觉得这个特性可能会移出实验状态,没有或者有一些小的变动。
概况
Accessors 注解用来配置lombok如何产生和显示getters和setters的方法。
默认情况下,lombok按照豆豆说明书产生getters和setters:例如一个名为pepper(弗兰特产辣椒,lombok的logo是一只小辣椒)属性的getter方法是getPepper。然而一些人可能为了一个更好看的API,想去打破豆豆说明书。@Acessors就是让我们做这个的。
一些程序员喜欢为他们的属性使用前缀。例如,他们用fPepper(fancy pepper? 豆豆跟pepper还是挺配哒)代替pepper。因为你不能用单元测试你的前缀的有效性,并且重构脚本可能将睡醒转化为局部变量或者方法的名字,我们强烈建议别这样做。并且,你的工具(例如你的编辑器)可以用特定的方法将标识符转向,如果你想这些信息被立马可见的话。然而,你也可以通过@Accessor列出你工程里所有的前缀。
Accessors 因此有3个选择:
- fluent 一个布尔值。如果为真,pepper的getter就是 pepper(),setter方法就是pepper(T newValue)。并且,除非特别说明,chain默认为真。
- chain 一个布尔值。如果为真,产生的setter返回的this而不是void。默认是假。如果fluent=true,那么chain默认为真。
set方法返回的是对象的实例,因此可以直接再使用set方法或者直接调用函数
- prefix 一系列string类型。如果显示,属性必须加上某些定义的前缀。每个属性名反过来与列表中的每个前缀进行比较,一个找到一个匹配,这个前缀被提取出来为属性创建基本的名字。前缀列表中不包含任何前缀也是合法的,为空则总是匹配。字符都是字母,紧接着前缀后的字符一定不能是小写字母。例如,pepper对前缀p不是相等匹配,而跟pEpper是匹配的(也就意味着属性的基本名字是epper)。
@Accessors注解可以在类和属性上使用。如果使用,这个注解应用在一个属性上,否则应用在这个类上。如果一个@Accessors注解在了一个属性,再对那个属性的类的@Accessors注解就会被忽略。
也就是在属性上增加注解,在类上的注解就会自动忽略;
使用前缀,匹配有前缀+大写字母这样的匹配才能自动生成忽略前缀的get方法和set方法。
支持的配置关键字
lombok.assessors.chain=true|false
如果设置为true,没有任何类被@Accessors注解,或者有类被注解但是没有为chain参数显式赋值,则表现为@Accessors(chain=true)
lombok.accessors.fluent= true | false
如果设置为真,没有任何类被@Accessors注解,或者有类被注解对fluent参数没有显式赋值,则表现为@Accessors(fluent=true)
lombok.accessors.prefix+=afield prefix(default:empty list)
这是一个列表属性;条目可以通过 +=操作符添加。从父配置文件继承的前缀可以通过-=操作符移除。没有任何类被@Accessors注解,或者有类被注解但是注解对prefix参数显式的赋值,则表现为
@Accessors(prefix={prefixes listed in configuration})
lombok.accessors.flagUsage=warning | error
如果配置了,lombok标出每个使用了@Accessors注解为一个警告还是一个错误。
附属细则@Accessors注解也用在lombok不同的寻找getters的方法中,例如@EqualsAndHashCode(不懂)
如果提供了前缀列表,属性名没有一个以其中的一个前缀开头,则属性会被lombok完全忽略掉,并且会产生一个警告。
作者:我是虫虫啊
来源:CSDN
原文:https://blog.csdn.net/cc_smile0702/article/details/73521878
版权声明:本文为博主原创文章,转载请附上博文链接!