lombok中的@Builder.Default注解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lombok中的@Builder.Default注解相关的知识,希望对你有一定的参考价值。

参考技术A lombok中的@Builder.Default注解为成员变量赋默认值
(1)只对成员变量设置默认值,builder构造默认值是无效的

如果我们用,java的new操作,是会对Student设置默认值的

但是Builder是无效的

原因在于,编译生成的Student.class文件,保留了成员变量的初始值,但是在StuentBuilder中,只有成员变量,而没有默认值

(2)设置@Builder.Default注解后,通过标识判断是否启用默认值

可以看到编译生成的.class文件,没有对age设置默认值。所以new出现的对象肯定没有设置默认值。
其次,通过引入标识 age$set ,判断是否启用默认值

this.age$set 默认是 false ,只有在

中才对其进行赋值为 true 。
也就是说,如果不调用 Student s = Student.builder().age(4).build(); , age$set 为 false ,执行 Student.$default$age() 方法,设置默认值。否则,获取 this.age 。

【总结】
(1)不用@Builder.Default,为成员变量设置默认值,new出来的对象自带默认值
(2)启用@Builder.Default,new出来的对象为空对象,不带默认值
(3)启用@Builder.Default,不设置-> Student.builder().build() ,为默认值
(4)启用@Builder.Default,设置-> Student.builder().age(4).build() ,为设置的值
关键看 Student.class 文件

Lombok中的@EqualsAndHashCode

@EqualsAndHashCode(callSuper = false)lombok 默认,忽略父类继承属性,自身相等即相当

​​​​​​​@EqualsAndHashCode(callSuper = true),比对子类(自身)属性和父类继承属性

以上是关于lombok中的@Builder.Default注解的主要内容,如果未能解决你的问题,请参考以下文章

就够了

MyEclipse安装lombok

JetBrains IntelliJ IDEA 安装 lombok

学习注解和了解lombok的原理

eclipse中sonarLite与lombok冲突问题

Spring java中的ToString和EqualsAndHashCode注释