一、簡單說明一下@Data註解的功能與使用方法:
1、@Data可以為類提供讀寫功能,從而不用寫get、set方法。
2、他還會為類提供 equals()、hashCode()、toString() 方法。
二、為什麼無法使用?
因為他需要安裝一個叫 “lombox” 外掛,以Idea為例:
1、開啟:“File --> setting --> plugins” 搜尋 Lombok
2、同時要在maven依賴中新增:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> </dependency>
3、重啟Idea
三、但是不推薦使用lombok,為什麼?
下面是選自知乎上的一篇文章,下面有連結。
下面,結合我自己使用Lombok之後的感受,談談Lombok帶來的幾大痛點。
1. JDK版本問題
當我想要將現有專案的JDK從Java 8升級到Java 11時,我發現Lombok不能正常工作了。於是我不得不將所有的Lombok註解從專案原始碼中清除,並使用IDE自帶的功能生成getter/setter,equals,hashCode,toString以及構造器等方法,你也可以使用Delombok工具完成這一過程。但這終究會消耗你很多的時間。
2. 脅迫使用
當你的原始碼中使用了Lombok,恰好你的程式碼又被其他的人所使用,那麼依賴你程式碼的人,也必須安裝Lombok外掛(不管他們喜不喜歡),同時還要花費時間去了解Lombok註解的使用情況,如果不那麼做,程式碼將無法正常執行。使用過Lombok之後,我發現這是一種很流氓的行為。
3. 可讀性差
Lombok隱藏了JavaBean封裝的細節,如果你使用@AllArgsConstructor註解,它將提供一個巨型構造器,讓外界有機會在初始化物件時修改類中所有的屬性。首先,這是極其不安全的,因為類中某系屬性我們是不希望被修改的;另外,如果某個類中有幾十個屬性存在,就會有一個包含幾十個引數的構造器被Lombok注入到類中,這是不理智的行為;其次,構造器引數的順序完全由Lombok所控制,我們並不能操控,只有當你需要除錯時才發現有一個奇怪的“小強”在等著你;最後,在執行程式碼之前,所有JavaBean中的方法你只能想象他們長什麼樣子,你並不能看見。
4. 程式碼耦合度增加
當你使用Lombok來編寫某一個模組的程式碼後,其餘依賴此模組的其他程式碼都需要引入Lombok依賴,同時還需要在IDE中安裝Lombok的外掛。雖然Lombok的依賴包並不大,但就因為其中一個地方使用了Lombok,其餘所有的依賴方都要強制加入Lombok的Jar包,這是一種入侵式的耦合,如果再遇上JDK版本問題,這將是一場災難。
5. 得不償失
使用Lombok,一時覺得很爽,但它卻汙染了你的程式碼,破壞了Java程式碼的完整性,可讀性和安全性,同時還增加的團隊的技術債務,這是一種弊大於利,得不償失的操作。如果你確實想讓自己的程式碼更加精煉,同時又兼顧可讀性和編碼效率,不妨使用主流的Scala或Kotlin這一基於JVM的語言。
來自知乎:https://zhuanlan.zhihu.com/p/146659383
還有一篇:https://www.cnblogs.com/grey-wolf/p/11812528.html