lombok基礎使用


前言

  Lombok 是一種 Java™ 實用工具,可用來幫助開發人員消除 Java 的冗長,尤其是對於簡單的 Java 對象(POJO)。使用注解更優雅的編碼,也能減少開發中重復造輪子。本文將介紹lombok的基礎注解及參數含義。

@Getter

可選元素:

修飾符和類型 可選元素 描述
boolean lazy  
Getter.AnyAnnotation[] onMethod 這里列出的任何注釋都放在生成的方法上。
AccessLevel value 如果你想讓你的getter不公開,你可以在這里指定一個替代訪問級別。

使用示例:

 @Getter( lazy = true, onMethod = @_({@JsonIgnore}), value = AccessLevel.PROTECTED ) private final String name = ""; 

說明:

  • Lazy:默認為:false,如果設置 lazy 則 該屬性必須為 final

  • onMethod:默認為{},此處出現的注解會在生成的方法上面,最常見的使用是結合JackJson,做序列化標注

    • JDK7-:@Getter(onMethod=@__({@AnnotationsGoHere}))
    • JDK8+:@Getter(onMethod_={@AnnotationsGohere})//注意后面的下划線onMethod
  • AccessLevel:默認為AccessLevel.PUBLIC 可以手動修改方法的訪問級別,配置參數為 枚舉類:AccessLevel中屬性

@Setter

可選元素

修飾符和類型 可選元素 描述
Setter.AnyAnnotation[] onMethod 這里列出的任何注釋都放在生成的方法上。
Setter.AnyAnnotation[] onParam 這里列出的任何注釋都放在生成的方法參數上。
AccessLevel value 如果你希望你的setter是非公開的,你可以在這里指定一個替代訪問級別。

使用示例:

@Setter(value = AccessLevel.PRIVATE) private String trueName; 

說明:

  • 該屬性配置和@Getter 經常結合使用

  • onParam :該屬性為參數的注解,此處可以和@NotNull 配合使用控制參數不為空,該屬性配置同 onMethod

@NonNull

可選元素:無

使用示例:

@NonNull private String trueName; private String getTrueName(@NonNull String name) 

說明:

  • 該注解可以用在 字段、方法、參數 上 常見用於 字段 和 參數
  • 如果是字段注解,那么生成的get 、構造方法 都會進行 null 檢測
  • 如果是參數注解,在方法的開頭會加入一個空值檢測。
  • 該注解檢測到空值后會拋出NullPointerException

 

@ToString

可選元素

修飾符和類型 可選元素 描述
boolean callSuper toString在輸出中包含超類實現的結果。
boolean doNotUseGetters 通常情況下,如果 getters是可用的,那么被調用。
java.lang.String[] exclude 這里列出的任何字段將不會被打印在生成的toString實現中。
boolean includeFieldNames 在打印時包括每個字段的名稱。
java.lang.String[] of 如果存在,明確列出要打印的字段。

調用示例:

@ToString(callSuper = true, exclude = {"id"}) @Data public class TestModel { private int id; private String trueName; } 

說明:

  • callSuper:默認false
  • doNotUseGetters:默認false 也就是會調用 get 方法
  • exclude: 默認為空
  • includeFieldNames:默認為true 會打印字段名稱
  • of:默認為全部字段,即打印全部字段

 

@EqualsAndHashCode

可選元素

修飾符和類型 可選元素 描述
boolean callSuper 調用超類的實現equals,並hashCode計算對該類中的字段值。
boolean doNotUseGetters 通常情況下,如果getter是可用的,那么被調用。
java.lang.String[] exclude 這里列出的任何字段在生成equalshashCode實現中都不會被考慮在內。
java.lang.String[] of 如果存在,則明確列出要用於身份的字段。
EqualsAndHashCode.AnyAnnotation[] onParam 這里列出的任何注釋都放在的生成的參數equalscanEqual

調用示例

@EqualsAndHashCode public class TestModel { private int id; private String trueName; } 

說明:

  • callSuper :默認false

  • doNotUseGetters:默認false 也就是會調用 get 方法

  • exclude:默認為空

  • of:默認為全部字段

  • onParam:該注解用以 在傳入的Object object 參數注解

@AllArgsConstructor

可選元素

修飾符和類型 可選元素 描述
AccessLevel access 設置構造函數的訪問級別。
AllArgsConstructor.AnyAnnotation[] onConstructor 這里列出的任何注釋都放在生成的構造函數中。
java.lang.String staticName 如果設置,生成的構造函數將是私有的,並且用包裝真實構造函數的相同參數列表生成額外的靜態“構造函數”。

說明:生成一個全指標構造函數。全參數構造函數需要類中每個字段的一個參數。

@NoArgsConstructor

可選元素

修飾符和類型 可選元素 描述
AccessLevel access 設置構造函數的訪問級別。
boolean force 如果true,將所有最終字段初始化為0 / null / false。
NoArgsConstructor.AnyAnnotation[] onConstructor 這里列出的任何注釋都放在生成的構造函數中。
java.lang.String staticName 如果設置,生成的構造函數將是私有的,並且用包裝真實構造函數的相同參數列表生成額外的靜態“構造函數”。

說明:生成一個無參數的構造函數。如果由於final字段的存在而無法寫入這樣的構造函數,將會生成錯誤消息。

@RequiredArgsConstructor

可選元素

修飾符和類型 可選元素 描述
AccessLevel access 設置構造函數的訪問級別。
RequiredArgsConstructor.AnyAnnotation[] onConstructor 這里列出的任何注釋都放在生成的構造函數中。
java.lang.String staticName 如果設置,生成的構造函數將是私有的,並且用包裝真實構造函數的相同參數列表生成額外的靜態“構造函數”。

說明:生成一個具有所需參數的構造函數。必需的參數是final和約束的字段,如@NonNull

@Data

可選元素

修飾符和類型 可選元素 描述
java.lang.String staticConstructor 如果你指定一個靜態構造函數名,那么生成的構造函數將是私有的,而創建一個靜態工廠方法,其他類可以用來創建實例。

說明:

  • 相當於@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode

  • 為所有字段生成getter,一個有用的toString方法,以及hashCode和equals實現,用於檢查所有非瞬態字段。還將為所有非final字段以及構造函數生成setter。

  • staticConstructor:默認:沒有靜態構造函數,而是普通的構造函數是公共的。如果你指定一個靜態構造函數名,那么生成的構造函數將是私有的,而創建一個靜態工廠方法,其他類可以用來創建實例。建議這個名字:“of”,就像這樣:public @Data(staticConstructor =“of”)類Point {final int x,y; }.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM