Lombok:簡潔代碼、提升編程效率利器

Lombok是一個能夠讓編程人員沒必要硬編set、get、構造以及hash和toString方法的插件,在編譯時會自動根據定義的屬性生成包含這些相關方法的class文件。編程

經常使用的註解以下:maven

@AllArgsConstructor
做用於類,生成全部屬性的代參構造函數ide


@NoArgsConstructor函數

做用於類,生成無參構造函數ui


@toString
做用於類,生成toString方法this


@EqualsAndHashCode
做用於類,生成equals和hashcode方法idea

 

@Setter,@Getter.net

做用於類,爲全部屬性生成set和get方法,做用於屬性,爲該屬性生成set和get方法;插件

 

下面這三個註解比較厲害了,終極大boss:3d

@Data
做用於類,能夠生成上面除了@AllArgsConstructor之外全部的方法。
若想生成全部參數構造,需配合@AllArgsConstructor使用,可是無參構造就會失效,因此須要自定義或搭配@NoArgsConstructor一塊兒使用。

須要說明的是:
若自定義了set或get方法,@Setter,@Getter和@Data三個註解使用時是不會覆蓋生成set或get方法的

 

@Builder
用於類,生成一個當前類的builder構建器、builder方法和全參構造函數。構建器中的全部方法爲當前類的屬性名命名,功能涵蓋set方法功能,但同時返回構建器對象,還有一個build方法,最終調用生成當前類對象。
Builder方法用於生成構造器對象。

須要注意:
使用該註解會同時生成全參構造函數,因此如需無參構造,須要自定義或配合@NoArgsConstructor一塊兒使用


@Accessors(chain = true)
這是一個還在實驗階段或公測階段的一個功能註解。須要配合@data或@set、@get使用。
可包含三個參數:
fluent:布爾值,默認false,true時生成的set和get方法都會去掉set個get前綴,該值爲true時,chain屬性默認爲true
chain:布爾值,默認false,只有fluent爲true時默認true。true時全部set方法返回值有void變成當前對象;
Prefix:前綴屬性(不經常使用,沒細研究)

 

下來看看實際如何操做

首先是idea安裝:

設置激活安裝的插件:

 

添加maven依賴:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.4</version>
</dependency>

 

@data使用示例

在右側structure選項能夠看到結果,也能夠Ctrl+F12查看結果以下:

 

@builder使用示例:

Ctrl+F12結果以下:

代碼使用:

 

@Accessors使用示例:

代碼:

是否是跟@builder用法有點類似……

 

日誌相關的註解:

@Slf4j(至關於:org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(this.getClass() );)
實例名就是「log」,使用以下:
log.warn(e.getMessage());
log.error(e.getMessage(), e);

還有其餘日誌相關注解,如:@Log4j / @Log4j2  / @CommonsLog ……

 

至此,lombok輝煌的一輩子就概述結束了,哈哈哈……

相關文章
相關標籤/搜索