好处:简化代码,增强代码可读性,提高开发效率。lombok注解使编译时注解,在编译成.class的时候帮我们自动转化成相应的代码。其实他的魅力并不在于帮助我们简单的编写对应的getter或者更多的方法,还有一点在于,当我们的字段发生改变时,lombok也会对相应的getter方法进行改变。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
ALT+7打开类的结构图我们可以看到ComBok的@Data帮我们自动生成了常用代码
生成JavaBean需要的所有方法;截图如4
注解源码如下:
package lombok; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(ElementType.TYPE) @Retention(RetentionPolicy.SOURCE) public @interface Data { String staticConstructor() default ""; }
我们看源码及其注释发现
1.目标Type
2.注解类型 Source
属性staticConstructor ,默认为空串,没有静态工厂方法,构造共有。而注解中介意我们staticConstructor赋值“of”:作用是私有构造,用静态工厂方法of()创建实例。
自动生成所有字段的getter方法
注解源码如下:
package lombok; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ElementType.FIELD, ElementType.TYPE}) @Retention(RetentionPolicy.SOURCE) public @interface Getter { lombok.AccessLevel value() default lombok.AccessLevel.PUBLIC; AnyAnnotation[] onMethod() default @AnyAnnotation; boolean lazy() default false; @Deprecated @Retention(RetentionPolicy.SOURCE) @Target({}) @interface AnyAnnotation {} }
自动生成所有字段的setter方法
生成无参构造
生成全参构造
原文:https://www.cnblogs.com/chengxuyuan-liu/p/10638624.html