Lombok 註解說明 原

val 

      自動識別參數類型,會定義一個局部final的變量

    例如 val  a = new ArrayList<String>();  相當於  final ArrayList<String> a = new ArrayList<String>();

@NonNull 

    非空約束,

    可以註解在方法的參數上,類的屬性上

     public void hello(@NonNull String hello){

        System.out.println(hello);

    }

    如果hello爲空的話,不會執行System.out.println(hello):方法,會拋出一個空指針異常

    -----

    註解在方法的屬性名上,如果有,@RequiredArgsConstructor註解 構造該對象時,必須傳入參數

    public class App 

    {

        @NonNull 

       private String hello;

    }

@Cleanup

    對象引用結束前調用某個方法,默認是close()方法,也可以自己制定一個無參的方法,多用於關閉流等操作,避免繁瑣的try{}catch{}操作

    

@Getter/Setter

    可以註解在類上或者字段上。

    註解在類上爲所有的字段自動生成過   Getter/Setter 方法

    可設置參數value=AccessLevel.xxxx 生成方法的訪問權限

@ToString  

    includeFieldNames  生成的toString是否包含字段名稱,默認true

    exclude 排除那些字段

    of 包括那些字段(默認全部),如果指定了對象,那麼 exclude 裏面對應的字段也會被執行

    callSuper 是否調用父類的 toString()方法

    doNotUseGetters 獲取字段值的時候,如果有可用的getters 是否不使用,默認false使用

@EqualsAndHashCode

    exclude

    of

    callSuper

    doNotUseGetters  同上


@NoArgsConstructor (自動生成無參構造器)

@RequiredArgsConstructor (有參構造器,如果 字段有 @NonNull 註解,那麼構造器必須包含該字段,不可以和@NoArgsConstructor同在)

@AllArgsConstructor 全參構造器,會生成一個帶有全部參數的構造器

    staticName 會將構造器私有化,並創建一個靜態的方法

    onConstructor 

    access 構造器的訪問權限,默認是 public


@Data

    相當於使用了    @Getter, @Setter, @ToString, @EqualsAndHashCode and @RequiredArgsConstructor 這些註解

    staticConstructorc 類似於staticName參數的作用

@Value

    類似Data,但是會將所有的字段設置成 private final 的,並且不會生成setters


@Builder

    會創建一個內部類,並創建靜態的 builder方法,可以通過該方法鏈式的構造對象,描述起來比較複雜

    這一段最好能自己看看官方文檔:    https://projectlombok.org/features/Builder.html

@SneakyThrows

    如果有一些自己不想處理的異常,但是拋出後,調用該方法的時候又有很多 try{}catch{}很麻煩,就可以用這個註解。

    用的比較多的是實現Runnable 的run()方法裏面。衆所周知run()方法是沒有拋出異常的,寫在裏面的代碼動不動就要try{}catch{}着實麻煩,用這個註解就可以搞定了


@Synchronized

    給方法加鎖

@Wither

    該註解放在屬性前面,會生成屬性的withXXX方法,可以使用withAge(xxx).withXX() 鏈式操作

日誌類註解:自動在你的類裏面生成靜態的 類實例


onMethod= / onConstructor= / onParam= 可以在對應的 地方添加 其他註解

    如果我們用了@Getter註解, 生成的getXX()方法是我們是看不到的,如果我們要在生成的getXXX()方法上面加註解,可以用 @Getter(onMethod=@__({@Ann1,@Ann2,@Ann3(value="hello")})) 這樣的方式

示例代碼如下

@AllArgsConstructor(onConstructor=@__(@Inject))
 public class OnXExample {
   @Getter(onMethod=@__({@Id@Column(name="unique-id")}))
   @Setter(onParam=@__(@Max(10000)))
   private long unid;
 }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章