背景:我今天在看研發項目代碼的時候,發現rd很多暴露接口會@Data@NoArgsConstructor等註解,後來查了一下是Lombok第三方庫的功能,覺得蠻不錯的,簡單記錄一下使用。
Lombok庫主要通過註解的形式修飾類,變量和方法。省去寫set/get變量值的方法、有參數/無慘構造器和輸入變量的值(還有一些其他功能,我這裏面就記錄代碼用到了)。
先看下項目中用到,如圖,三個註解,@Data,@NoArgsConstrucor,@AllArgsConstructor這個三個。
Lombok很多註解,我覺得可以分成三類:修飾類,修飾變量和修飾方法。
修飾類:
@Getter(value = AccessLevel.PUBLIC)
@Setter(value=AccessLevel.PUBLIC)
這兩個主要代替我們經常對變量進行值的寫入和獲取,除了修飾類,還可以修飾變量,那麼該變量就可以直接有set、get方法。
舉個例子,如圖:這樣id就有了setid和getid兩個方法。同時我們設置變量訪問權限這裏面設置public。
這裏面有個java基礎就是變量權限分成4中:
public->producted->default->private 權限依次遞減。
@NoArgsConstructor:沒有參數的構造方法
@AllArgsConstructor:全部參數的構造方法
構造方法:主要針對類,表現形式和類名必須一致,但是沒有返回值 這種:public 類名()。主要作用就是爲類實例化設置屬性。
無參數構造方法:new的不需要傳參。
全參數構造方法:new所有參數都要賦值,這個一般和@NOTNULL一起使用,表示該變量不能爲空。
@Data :是多個註解的集合包含:@getter,@setter,@tostring,@canEqual,@equals,@hashCode。
ps:hashcode和equals 都是判斷兩個對象是否一致,區別在於:
hashcode:效率高但是並不可靠,即兩個不同對象通過生成hash值也可能相同
equals:效率低但是準確。
所以一般選擇想用hashcode判斷,不同肯定不是一個對象,相同在用equals去判斷。
https://www.jianshu.com/p/2543c71a8e45
https://blog.csdn.net/ThinkWon/article/details/101392808
https://blog.csdn.net/bailu666666/article/details/81153815