您好,登录后才能下订单哦!
这篇文章将为大家详细讲解有关Lombok中@Accessors注解的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
@Accessors注解官方给出的解释是:面向getter和setter的更流畅的API。
官方给出实验(设计)原因是:
希望将这些功能整合到更完整的属性支持概念中。
新功能–需要社区反馈。
当前状态:中性-可能会有一些变化。这些更改旨在向后兼容,但应从实验功能开始:
开放功能请求:以小写字母开头,后跟大写字母开头的属性的命名行为。一半的规范,工具和lombok用户更喜欢将名为uLimit的字段转换为getULimit(包括lombok),而另一半则更喜欢getuLimit。 @Accessors可能参与解决此请求的任何更新。
开放功能请求:对命名访问者的更多控制;例如,解决以创意命名的布尔属性:将boolean wasRunning转换为boolean wasRunning()而不是boolean isWasRunning(),以及更广泛的前缀支持。如果解决了此功能请求,则将涉及@Accessors。
@Accessors当前不会从字段@Accessors批注“层叠”到类级别的@Accessors批注,但会将其“层叠”到lombok.config。更改此设置并不困难,但向后不兼容。不太可能破坏很多现有代码,但这需要在功能退出实验状态之前进行决定。
@Accessors批注用于配置lombok生成和查找getter和setter的方式。
默认情况下,lombok遵循针对getter和setter的bean规范:例如,名为Pepper的字段的getter是getPepper。但是,有些人可能希望打破bean规范,以得到更好看的API。 @Accessors允许您执行此操作。
一些程序员喜欢在其字段中使用前缀,即他们写的是fPepper而不是Pepper。我们强烈建议您不要这样做,因为您无法对前缀的有效性进行单元测试,并且重构脚本可能会将字段转换为局部变量或方法名称。此外,如果您希望该信息立即可见,则您的工具(例如您的编辑器)可以以某种方式来处理标识符。不过,您也可以通过@Accessors列出项目使用的前缀。
因此@Accessors具有3个选项 :
fluent-- 一个布尔值。如果为true,则胡椒粉的吸气剂仅是Pepper(),而装填器的是Pepper(T newValue)。此外,除非指定,否则chain默认为true。 默认值:false。
chain--一个布尔值。如果为true,则生成的setter返回此值,而不是void。 默认值:false,除非fluent = true,否则默认值:true。
prefix--字符串列表。如果存在,则字段必须以这些前缀中的任何一个作为前缀。依次将每个字段名称与列表中的每个前缀进行比较,如果找到匹配项,则将前缀去掉以创建该字段的基本名称。在列表中包括一个始终匹配的空字符串是合法的。对于字母字符,前缀后面的字符不能为小写字母,即Pepper甚至不能与前缀p匹配,但pEpper可以匹配(并且意味着该字段的基本名称是epper)。
@Accessors注释在类型和字段上合法;如果存在,则适用的注释是该字段上的注释,否则为该类上的注释。当在字段上存在@Accessors批注时,即使在字段@Accessors上未配置的属性,也将忽略该字段所在的类中也存在的任何@Accessors批注。这与任何lombok.config配置键相反,如果未指定任何显式@Accessors批注,这些配置键将作为后备默认值。
import lombok.experimental.Accessors; import lombok.Getter; import lombok.Setter; @Accessors(fluent = true) public class AccessorsExample { @Getter @Setter private int age = 10; } class PrefixExample { @Accessors(prefix = "f") @Getter private String fName = "Hello, World!"; }
public class AccessorsExample { private int age = 10; public int age() { return this.age; } public AccessorsExample age(final int age) { this.age = age; return this; } } class PrefixExample { private String fName = "Hello, World!"; public String getName() { return this.fName; } }
lombok.accessors.chain = [true | false] (default: false)
如果设置为true,则任何没有@Accessors批注或没有@Accessors批注但该批注不具有chain参数的显式值的类,都将像出现@Accessors(chain = true)一样起作用。
lombok.accessors.fluent = [true | false] (default: false)
如果设置为true,则任何没有@Accessors批注或没有@Accessors批注但该批注没有fluent参数的显式值的类都将像@Accessors(fluent = true)一样存在。
lombok.accessors.prefix += a field prefix (default: empty list)
这是一个列表属性;可以使用+ =运算符添加条目。可以使用-=运算符删除从父配置文件继承的前缀。任何没有或没有@Accessors批注的类都可以,就好像存在@Accessors(prefix = {在配置中列出的前缀})一样。
lombok.accessors.flagUsage = [warning | error] (default: not set)
如果已配置,Lombok会将@Accessors的任何用法标记为警告或错误。
最近的@Accessors 注解还用于lombok中用于各种寻找类的getter方法,例如@EqualsAndHashCode。
@EqualsAndHashCode。 如果提供了前缀列表,并且字段不是以其中一个开头,则该字段将被lombok完全跳过,并会生成警告。
关于Lombok中@Accessors注解的作用是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。