lombok註解解析:
@nonnull
使用在方法的引數或者構造器的引數上,用於生成null驗證。
lombok可以識別任何第三方工具的字段上標註的@nonnull名稱的註解,並在使用@data、@allargscontruct進行生成方法和構造器時進行null判斷。
而lombok的@nonnull註解使用在引數之上,僅僅作用到你自定義的方法和構造器之上。
null判斷會採用:
1if (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...