Lombok使用詳解

1.Lombok是什么?

Lombok是一個(gè)通過注解以達(dá)到減少代碼的java插件,通過注解減少set和get方法,構(gòu)造方法等。

安裝Lombok

首先需要安裝插件,才能進(jìn)行識(shí)別

File->settings->Plugins>Browse repositories->Lombok,如圖


方法一 如果使用的是Maven,則可以在項(xiàng)目的pom.xml文件下添加依賴

<dependency>

? ? <groupId>org.projectlombok</groupId>

? ? <artifactId>lombok</artifactId>

? ? <version>1.16.12</version>

</dependency>

方法二 通過gradle在項(xiàng)目build.gradle下添加依賴

compile'javax.annotation:javax.annotation-api:1.2'

compile'org.projectlombok:lombok:1.16.6'

使用Lombok

Lombok 提供注解方式來提高代碼的簡(jiǎn)潔性,常用注解有:

@Data

該注解相當(dāng)于同時(shí)加上以下注解@Setter@Getter@ToString@EqualsAndHashCode

@Setter@Getter

作用于屬性上,自動(dòng)生成get,set方法

@NonNull

該注解快速判斷是否為空,如果為空,則拋出java.lang.NullPointerException

@Synchronized

該注解自動(dòng)添加到同步機(jī)制,有趣的是,生成的代碼并不是直接鎖方法,而是鎖代碼塊,使用方法:

private DateFormat format =new SimpleDateFormat("MM-dd-YYYY");

@Synchronized?

????public String synchronizedFormat(Datedate)?

????????{returnformat.format(date);}

生成等價(jià)代碼:

????private final java.lang.Object$lock= new java.lang.Object[0];

????private DateFormat format = new SimpleDateFormat("MM-dd-YYYY");

????public String synchronizedFormat(Date date) {?

?????????????????synchronized ($lock) {

????????????????????return format.format(date);?

?????????????}

????}

@ToString

該方法大家應(yīng)該非常熟悉,但需要注意的是:@ToString有多個(gè)屬性可以進(jìn)一步設(shè)置:

callSuper 是否輸出父類的toString方法,默認(rèn)為false

includeFieldNames 是否包含字段名稱,默認(rèn)為true

exclude 排除生成tostring的字段

@EqualsAndHashCode

1.?此注解會(huì)生成equals(Object other)?和?hashCode()方法。

2.?它默認(rèn)使用非靜態(tài),非瞬態(tài)的屬性

3.?可通過參數(shù)exclude排除一些屬性

4.?可通過參數(shù)of指定僅使用哪些屬性

5.?它默認(rèn)僅使用該類中定義的屬性且不調(diào)用父類的方法

6.?可通過callSuper=true解決上一點(diǎn)問題。讓其生成的方法中調(diào)用父類的方法。

@CleanUp

注釋可用于確保已分配的資源被釋放,如IO的連接關(guān)閉

public void testCleanUp(){?

????try{

????????????????@Cleanup

????????????????????ByteArrayOutputStream baos =new ByteArrayOutputStream(); ????????????????????baos.write(newbyte[] {'Y','e','s'});?

? ? ? ? ? ? ? ? ? ? ?System.out.println(baos.toString()); }

? ? ? catch(IOException e) {

?????????????????e.printStackTrace();?

?????}

}

@SneakyThrows

用法比較簡(jiǎn)單,其實(shí)就是對(duì)于異常的一個(gè)整理,將checked exception 看做unchecked exception, 不處理,直接扔掉。?減少了到處寫catch的不便利性。比如在線程中,catch所有異常,再比如在一些不太可能發(fā)生異常的地方,但是你又必須cache checked exception的地方使用這個(gè)annotation會(huì)顯得代碼比較規(guī)整,易讀?;蛟S也會(huì)顯得高大上一點(diǎn)吧

public class SneakyThrowsExample implements Runnable {

?? @SneakyThrows(UnsupportedEncodingException.class)

?? public String utf8ToString(byte[] bytes) {

???? return new String(bytes, "UTF-8");

?? }

?? @SneakyThrows

?? public void run() {

???? throw new Throwable();

?? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • 什么是注解(Annotation):Annotation(注解)就是Java提供了一種元程序中的元素關(guān)聯(lián)任何信息和...
    九尾喵的薛定諤閱讀 3,413評(píng)論 0 2
  • 對(duì)杭州還是充滿了留戀
    吾乃哲貓閱讀 210評(píng)論 0 0
  • 我挺著又重又大的書包,向?qū)W校門口走去。這是個(gè)秋高氣爽的季節(jié),涼涼的秋風(fēng)溫柔的撲在我臉上,舒服極了。 一片片暗金色的...
    歡樂的Joy閱讀 208評(píng)論 5 2
  • 最近開始學(xué)習(xí)kotlin,這里根據(jù)kotlin擴(kuò)展類的特性,寫了一個(gè)簡(jiǎn)單的日志管理的類這里涉及到一些kotlin和...
    荒誕的墨墨閱讀 1,690評(píng)論 2 5

友情鏈接更多精彩內(nèi)容