第三方工具系列 Lombok常用註解

2022-02-09 13:18:32 字數 3980 閱讀 3669

lombok註解解析:

@nonnull

使用在方法的引數或者構造器的引數上,用於生成null驗證。

lombok可以識別任何第三方工具的字段上標註的@nonnull名稱的註解,並在使用@data、@allargscontruct進行生成方法和構造器時進行null判斷。

而lombok的@nonnull註解使用在引數之上,僅僅作用到你自定義的方法和構造器之上。

null判斷會採用:

1

if (param == null) 2

throw

new nullpointerexception("param is marked @nonnull but is null");

的形式插入,並且會在你方法的開頭和構造器的this,super之類的呼叫之後插入。

@cleanup

使用在資源之前,用於表示資源可以被完美自動釋放(在**的執行路徑超出資源範圍之前)。

將該註解標註在表示資源的變數之上,比如:@cleanup inputstream in = new fileinputstream("some/file");

這樣一來,在資源範圍結束的位置會自動呼叫in.close()方法進行資源釋放。這個呼叫會在try...finally...塊中呼叫,來保證呼叫必定會執行。

當然,你也可以在註解內部定義釋放資源的方法名稱,來指定釋放資源的具體方法,這適用於沒有close()方法的情況下,必須保證這些方法是無參的。

@getter and @setter

標註在字段之上,用於自動生成get、set方法。boolean型別為is開頭。

生成的get、set方法預設情況之下都是public的,但也可以手動指定範圍value=accesslevel.public、accesslevel.protected、accesslevel.private、accesslevel.private四種。

也能標註在類上,表示針對該類中所有的非靜態字段進行get、set方法自動生成。

如果指定某個欄位的accesslevel=accesslevel.none,則可以使該生成動作失效,此時可以手動實現get、set方法,這應用於在這些方法中有一些自定義邏輯的情況下。

@tostring

標註於類之上,用於生成tostring()方法。

includefieldnames,預設為true,表示在tostring輸出時輸出欄位名稱。

callsuper,預設為false,表示生成tostring時不輸出超類中的字段內容,若要輸出超類中的內容,需要設定為true

donotusegetters,預設為false,表示獲取欄位值時通過get方法獲取,設定為true表示直接通過字段獲取

onlyexplicitlyincluded,預設為false,表示輸出所有非靜態字段內容,如果設定為true,則只輸出標註有@tostring.include的字段和方法

@tostring.include

標註於字段、方法之上,表示生成tostring方法時包含該註解標註的字段和方法,需要與onlyexplicitlyincluded一起使用。

rank,預設為0,表示級別,數字越大級別越高,高階別將會優先輸出,同級別按照**順序輸出。

name,可以為標註的成員(字段或者方法)另起乙個名字。

@tostring.exclude

標註於字段之上,表示生成tostring方法時不包含被該註解標註的字段。那麼生成tostring方法時會跳過這些字段,

@equalsandhashcode

標註於類之上用於生成hashcode方法和equals方法。

callsuper,同上

donotusegetters,同上

onlyexplicitlyincluded,同上,需要配合@equalsandhashcode.include使用。

@equalsandhashcode.include

標註於字段或者方法之上,需要與onlyexplicitlyincluded配合使用,表示將該註解標註的內容新增到實現hashcode和equals方法的內容中去。

@equalsandhashcode.exclude

標註於字段之上,用於排除不需要參與生成hashcode和equals方法的字段。可單獨使用。

@noargsconstructor

用於生成無參構造器,如果類中存在final欄位,則會報編譯錯誤。一般結合其他幾個構造器註解一起使用提供乙個無參構造器,並且不會檢查@nonnull標註的字段

force,預設為false,表示是否針對final欄位進行特殊處理,如果將其設定為true,則上面的編譯錯誤將會消失,內部處理為,將final欄位初始化為0\false\null

access,預設為lombok.accesslevel.public,表示public範圍的構造器

staticname,一旦設定該值,則會生成乙個靜態的「構造器」工廠,其內部包裹著乙個私有的構造器,對外提供建立物件的功能,這是明顯的工廠模式。

@requiredargsconstructor

用於按照要求生成構造器,所謂的要求就是包含final欄位和類似於@nonnull約束標註的字段,會對@nonnull欄位進行明確的null檢查

access,同上

staticname,同上

@allargsconstructor

用於生成包含所有欄位的構造器。@nonnull欄位會進行null判斷檢查。

access,同上

staticname,同上

@data

標註於類之上,是@tostring,@equalsandhashcode、@getter、@setter、@requiredargsconstructor的綜合體

staticconstructor,同staticname

@value

可以看成是@data的變體,表示生成乙個不可變類(final類)。沒有set方法,只有get方法,字段全部為final private的,類也是final的

等效於@getter @fielddefaults(makefinal=true, level=accesslevel.private) @allargsconstructor @tostring @equalsandhashcode

staticconstructor,同上。

如果手工實現了任何乙個註解的功能,那麼該註解將失效,為了使註解起效,你可以在手共實現的方法上新增註解@lombok.experimental.tolerate,用於將手共實現對lombok隱藏。

我們可以使用下面兩種方式來重寫預設為final和private的行為,一是直接在字段上新增accesslevel,二是使用@nonfinal或者@packageprivate註解。

@builder

標註於類之上,用於生成複雜的builder api,建立構建者模式。

還可用於標註於構造器和方法之上。

@sneakythrows

標註於方法之上用於隱藏異常丟擲語句,該註解存在爭議,暫不使用

@log

@commonslog

@flogger

@jbosslog

@log

@log4j

@log4j2

@slf4j

@xslf4j

@synchronized

標註於方法(只能用於靜態方法和例項方法)之上,用於表示同步方法,鎖可以使用預設的也可以使用自定義的鎖(private final )。

常用第三方庫

1 通過cocoapods安裝 專案名稱 專案資訊 afnetworking 網路請求元件 fmdb 本地資料庫元件 sdwebimage 多個縮圖快取元件 uickeychainstore 存放使用者賬號密碼元件 reachability 監測網路狀態 datetools 友好化時間 mbprog...

Swift常用第三方

swiftdate swiftdate是github上開源的,使用swift語言編寫的nsdate封裝庫,可以很方便的在swift中處理日期,比如日期建立,比較,輸出等。cvcalendar reachability.swift 可達性 kingfisher nvactivityindicatorv...

iOS常用效能監測工具 第三方

點此傳送到github pfpsstatus是用來顯示fps狀態在ios狀態列,fps是一秒鐘渲染多少幀 frame per second fps,fps的值最佳為60左右,一般來說小於這個值就較為卡頓了。platform ios,7.0 pod jpfpsstatus 0.1.1 if defin...