Java学习笔记#09 Lombok @Getter和@Setter

@Getter和@Setter
注解在字段上,自动生成getter和setter。

如果字段fooboolean类型,则生成的getter叫做isFoo,否则字段叫做getFoo,生成的setter都叫做setFoo。确切地说,如果字段名首字母为小写,则改为大写,否则不做改动,然后加上前缀get / set / is,如果boolean类型字段名以is开头,紧接一个大写字母,则getter方法名为该变量名。注意只有boolean变量有上述特性,Boolean变量的getter方法也以get开头。

生成的getter / setter是public的,可以指定value属性,传入枚举类AccessLevel,取值包括PUBLICPROTECTEDPACKAGEPRIVATE

@Getter / @Setter也可以注解类,为所有字段生成getter / setter,但是静态字段不会生成getter / setter,final字段不会生成setter。

可以在字段上注解@Getter / @Setter,并设置AccessLevel.NONE来阻止类上的注解@Data@Getter@Setter为相应字段生成getter / setter。

如果该类已经包含了同名且参数数量相同的方法,则@Getter / @Setter不再生成该方法。如果@Getter / @Setter注解在字段上,且出现上述情况,会出现警告:Not generated 'xxx'(): A method with similar name 'xxx' already exits. 可以使用@Tolerate注解同名方法,将其对lombok隐藏,但是应当留意到getter是无参方法,无法重载另一个无参方法,在已有的无参getter上使用@Tolerate注解会导致编译报错:java: 已在类xxx中定义了方法getYyy()。

很多常见的字段注解(如org.springframework.lang.Nullable)会被自动复制到正确的位置(getter方法上,以及setter方法参数上),可以通过lombok.copyableAnnotations添加更多应该被复制的注解。

@Getter可以用于枚举类,@Setter不行。

如果想在生成的getter / setter上添加注解,可以设置onMethod=@\__({@AnnotationsHere})属性,如果想在生成的setter的唯一参数上添加注解,可以设置onParam=@__({@AnnotationsHere})属性。

lombok.accessors.chain = [true | false] (默认false
如果设置为true,生成的setter会返回this,而不是void,从而可以进行链式编程。该配置会被lombok.accessors.fluent覆盖。该配置会被显式设置的@Accessorschain属性覆盖。
lombok.accessors.fluent = [true | false] (默认false
如果设置为true,生成的getter / setter不会加上前缀get / set / is,同时会覆盖lombok.accessors.chain配置,所生成的setter会返回this,而不是void,从而可以进行链式编程。该配置会被显式设置的@Accessorsfluent 属性覆盖。
lombok.accessors.makeFinal = [true | false](默认false
1.18.24新增。如果设置为true,则生成的getter / setter为final的。该配置会被显式设置的@AccessorsmakeFinal 属性覆盖。
lombok.accessors.prefix += 字段前缀 (默认空列表)
如果使用+=m,则以m为前缀的字段(如mFoo)的getter名为getFoo而不是getMFoo,注意mellow的前缀并不是mmEllow才是。而如果使用-=m,则从父级配置文件继承的前缀会被移除,也就是说如果根目录下有lombok.config,配置lombok.accessors.prefix += m,源代码文件所在目录下有一个离它更近的lombok.config,配置lombok.accessors.prefix -= m,则该源代码文件中的字段mFoo最终生成的getter名为getMFoo。该配置会被显式设置的@Accessorsprefix 属性覆盖。如果有字段存在前缀,但是该前缀不在列表中,则会出现编译警告:java: Not generating getter / setter for this field: It does not fit your @Accessors prefix list. 如果通过-=去除了所继承的要移除的前缀,则不会出现警告。
lombok.getter.noIsPrefix = [true | false] (默认false
如果设置为trueboolean字段的getter方法会以get开头,lombok所生成的方法中对getter的调用也会随之改变。
lombok.accessors.capitalization = [BASIC | BEANSPEC] (默认BASIC
控制类似uShaped这种字段名(一个小写字母后跟大写字母)的首字母大写行为,basic则生成getUShapedbeanspec则生成getuShaped。两种策略都很常用,java生态系统中后者使用得更广泛。
lombok.setter.flagUsage = [WARNING | ERROR] (默认不设置)
所有对@Setter的使用都会在编译时被标记为警告或错误。设置为WARNING时,编译警告提示:java: Use of @Setter is flagged accroding to lombok configuration. 设置为ERROR时,无法编译通过,提示内容相同,但由警告变为错误。
lombok.getter.flagUsage = [WARNING | ERROR] (默认不设置)
所有对@Getter的使用都会在编译时被标记为警告或错误。设置为WARNING时,编译警告提示:java: Use of @Getter is flagged accroding to lombok configuration. 设置为ERROR时,无法编译通过,提示内容相同,但由警告变为错误。
lombok.copyableAnnotations = [注解的列表] (默认空列表)
Lombok会将这些注解复制到正确的位置(getter方法上,以及setter方法参数上)。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值