idea使用lombok(待用时候研究补充)

好处:简化代码,加强代码可读性,提升开发效率。注解类型为Source,源码中显示,编译以前丢失,转化为具体代码。其实他的魅力并不在于帮助咱们简单的编写对应的getter或者更多的方法,还有一点在于,当咱们的字段发生改变时,lombok也会对相应的getter方法进行改变。java

1.安装插件LomBok Plugin

2.配置idea编译器,支持注解编译

3.引入Lombok依赖 

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
scope=provided,说明它在编译阶段生效,不须要打入包中。Lombok在编译期将java文件正确的编译为完成的Class文件。 

4.使用

ALT+7打开类的结构图咱们能够看到ComBok的@Data帮咱们自动生成了经常使用代码ide

5.注解和代码进行转换查看

具体的在对应java文件上右键--Refactor  中咱们能够看到lombok和delombokidea

6.Lombok注解详解

 @Dataspa

注解源码以下:插件

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 "";
}
View Code

咱们看源码及其注释发现code

1.用处:TYPE(类,接口(包括注解类型),枚举)blog

2.注解类型 SOURCE(源码中显示,编译以前丢失而且转化为具体代码)接口

3.属性staticConstructor ,默认为空串,没有静态工厂方法,构造共有。而注解中介意咱们staticConstructor赋值“of”:做用是私有构造,用静态工厂方法of()建立实例。开发

@Getterget

注解源码以下:

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 {}
}
View Code

咱们看源码及其注释发现

1.用处:TYPE(为全部字段生成getter方法)  FIELD(为注解字段生成getter方法)

2.注解类型:SOURCE

3.属性

   value :控制getter方法的级别 默认public

lombok.AccessLevel value() default lombok.AccessLevel.PUBLIC;


public enum AccessLevel {
    PUBLIC, MODULE, PROTECTED, PACKAGE, PRIVATE,
    /** Represents not generating anything or the complete lack of a method. */
    NONE;
}

value设置为NONE能够不生成这个字段的getter方法,MODULE,PACKAGE都是生成的默认方法级别

AnyAnnotation[] onMethod() default @AnyAnnotation;

boolean lazy() default false;

其余注解相似。

相关文章
相关标签/搜索