日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lombok pojo类小神器

發布時間:2025/3/18 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lombok pojo类小神器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

Lombok主頁

Lombok下載

Lombok引入項目之后,便可以使用 本文記錄了在項目中應用Lombok時的使用案例,希望對朋友你有一些幫助。

  • 可以去 下載jar包

  • maven:

    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.10</version></dependency>
  • gradle:

    // https://mvnrepository.com/artifact/org.projectlombok/lombok compile group: 'org.projectlombok', name: 'lombok', version: '1.16.10'
  • 目前最新版本為1.16.10。

    初學Lombok的使用時,建議配合Java的編譯工具,便于理解Lombok在背后做的事情。


    Lombok 安裝

    使用 lombok 是需要安裝的,如果不安裝,IDE 則無法解析 lombok 注解。先在官網下載最新版本的 JAR 包。

    第一次使用的時候我下載的是最新版本的,也就是我現在用的1.16.10 目前版本更新很快。

    1.雙擊下載下來的 JAR 包安裝 lombok

    我選擇這種方式安裝的時候提示沒有發現任何 IDE,所以我沒安裝成功,我是手動安裝的。如果你想以這種方式安裝,請參考官網的視頻。

    2.eclipse 手動安裝 lombok
    (1). 將 lombok.jar 復制到eclipse.ini 所在的文件夾目錄下
    (2). 打開 eclipse.ini,在最后面插入以下兩行并保存:

    -Xbootclasspath/a:lombok.jar -javaagent:lombok.jar

    (3).重啟 eclipse


    Lombok好處在哪里?

    沒使用Lombok之前,定義JavaBean時,需要為每個成員定義getter/setter方法,無論手寫或者自動生成,過程都不麻煩,但當Bean里的成員蠻多時,看代碼的時候就比較心煩,無關的部分越來越多。隨著項目的成長,代碼的行數也奇跡般的增長,以至于項目經理在評估工作量時都要考慮適時的調整比率,麻煩呀。

    @Data注解

    通過在在class關鍵字前增加@Data,Lombok除了自動生成所有非final成員的getter/setter方法外,還有額外的福利,lombok同時生成了toString、equals、hashCode方法,并且完全符合規范,這樣縮減了代碼的規模,也少了手寫toString/equals/hashCode方法的煩惱。

    @Dataclass Person{private String name;private int age;private String job;private Object info;}

    @ToString注解

    在調試代碼時經常遇到一個問題,查看某個變量的值時,發現變量窗口展示的是一個奇怪的值(或者說對象在JVM內部表示的地址,這其實是toString方法的默認實現);想要查看對象內部各成員的值就需要逐層展開,這樣才能看到內部的信息。類似的調試過程煩不勝煩,但對于定義了合適的toString方法的類的對象,調試時查看其內部成員的值則會簡單許多,調試器會自動調用對象的toString方法,并將得到的字符串展示在變量值窗口,這無疑為調試帶來了莫大便利。但手寫toString方法其實非常麻煩,有過相關經歷的朋友可能會深有體會。對于某個具體的類來說,出于安全或者性能或者其它方面的考慮,可能并不希望全部成員都出現在toString方法的返回值里。

    @ToString(exclude = { "age", "job" }, includeFieldNames = false, doNotUseGetters = true) class Staff { private String name; private int age; private String job; private Object info; } @ToString(callSuper = false) class Student extends Staff { private String schoolName; private int classNo; }

    @EqualsAndHashCode

    在項目開發過程中,雖然場景比較少,但仍然不可避免存在需要自定義equals或者hashCode方法的時候,當然這也是頭疼的時候。根據《Effective Java》中的建議,equals方法和hashCode方法要同時實現,并且保證一致性。Lombok提供的@EqualsAndHashCode完美的解決了手寫equals和hashCode方法時遇到的全部問題,不需要刻意關注底層的實現細節

    @EqualsAndHashCode(exclude = { "age", "job" }, doNotUseGetters = true) class Staff { private String name; private int age; private String job; private Object info; } @EqualsAndHashCode(callSuper = false) class Student extends Staff { private String schoolName; private int classNo; }

    @Getter和@Setter

    通過這兩個注解,可以靈活控制是否為字段提供getter/settere方法,以及getter/setter方法的訪問權限。由于使用非常簡單,以后就不用看到一大堆的get set 啰。

    class Person{ @Getter @Setter private String name; @Getter private String schoolName; @Setter private int classNo; @Getter(AccessLevel.MODULE) private int age; @Getter(AccessLevel.NONE) private String job; @Getter(AccessLevel.PRIVATE) private Object info; } 與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的Lombok pojo类小神器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。