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;

其餘註解相似。

相關文章
相關標籤/搜索