前言
想想已經工作了一年,工作中遇到的問題一直沒有記錄下來,以后遇到相同的問題可能還需要花費很多的時間,因此打算記錄一下博客。方便以后自己的復習和問題查找
剛好最近項目引入了Lombok,剛好從現在起記錄一下自己的學習與成長
一、Lombok安裝
Lombok是一個開源項目,源代碼托管在github上,使用的時候需要在maven中引入jar包
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> <scope>provided</scope> </dependency>
並且需要在開發工具中安裝插件。通過eclipse或idea的插件市場自動安裝即可。
還可以通過jar包本地安裝:在jar包所在目錄打開windows命令行,輸入
java -jar lombok-1.16.20.jar
程序會自動找到eclipse或idea安裝目錄,點擊Install/Update安裝即可
二、Lombok注解使用
Lombok常用的注解有
@Getter @Setter @ToString @EqualsAndHashCode @Data @NonNull
其中前4個注解顧名思義即可知道是什么意思,在類上標注后,Lombok即可生成對應的方法
其實我們只需要@Data一個注解即可,它可以生成getter、setter、equals、canEqual、hashCode、toString方法。
使用起來十分方便,也會簡化了平時我們的開發
@NonNull :該注解加在屬性上,使用該注解可以在對應屬性的set方法中判斷是否為空,若為空則會拋出空指針異常
雖然提高了編碼效率,卻存在一個重要的問題,如果我們的類中有繼承關系並且使用到equals方法比較的話,最好不要使用Lombok,@Data和@EqualsAndHashCode兩個注解所生成的方法只會比較子類的屬性,對於父類的屬性不會去做比較,因此可能子類屬性相同繼承下來的屬性不相同的兩個對象會被判斷為相等
三、總結
Lombok雖然幫助我們大大簡化了代碼,提高了整潔度,但是卻降低了可讀性,也對繼承的特性支持不是很好,某些情況下是可以增加我們的效率,但是建議還是自己編寫,畢竟開發工具可以自動生成方法,也不會有多麻煩,並且在equals方法比較的時候也可以高度的自定義。