AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

盤點Lombok的幾個操作,你記住了嗎?

來源: 責編: 時間:2024-05-07 09:15:47 171觀看
導讀前言本文不討論對錯,只講騷操作。有的方法看看就好,知道可以這么用,但是否應用到實際開發中,那就仁者見仁,智者見智了。一萬個讀者就會有一萬個哈姆雷特,希望這篇文章能夠給您帶來一些思考。耐心看完,你一定會有所收獲。@onX

前言

本文不討論對錯,只講騷操作。Fk628資訊網——每日最新資訊28at.com

有的方法看看就好,知道可以這么用,但是否應用到實際開發中,那就仁者見仁,智者見智了。Fk628資訊網——每日最新資訊28at.com

一萬個讀者就會有一萬個哈姆雷特,希望這篇文章能夠給您帶來一些思考。Fk628資訊網——每日最新資訊28at.com

耐心看完,你一定會有所收獲。Fk628資訊網——每日最新資訊28at.com

@onX

例如 onConstructor, oMethod, 和 onParam 允許你在生成的代碼中注入自定義的注解。一個常見的用例是結合 Spring 的 @Autowired。Fk628資訊網——每日最新資訊28at.com

在 Spring 的組件(如 @Service、@Controller、@Component、@Repository 等)中使用 @RequiredArgsConstructor(onConstructor = @__(@Autowired)),可以讓 Lombok 在生成構造函數時也加上 @Autowired 注解,這樣,Spring 就可以自動注入所需的依賴。Fk628資訊網——每日最新資訊28at.com

例如下面這段代碼Fk628資訊網——每日最新資訊28at.com

@Service@RequiredArgsConstructor(onConstructor = @__(@Autowired))public class MyService {    private final AnotherService anotherService;}

上述代碼片段使用 Lombok 和 Spring 注解,Lombok 會為其生成以下代碼Fk628資訊網——每日最新資訊28at.com

@Servicepublic class MyService {    private final AnotherService anotherService;    @Autowired    public MyService(AnotherService anotherService) {        this.anotherService = anotherService;    }}

從生成的代碼中可以看出:Fk628資訊網——每日最新資訊28at.com

  • 為 MyService 生成了一個構造函數,該構造函數接受一個 AnotherService 類型的參數。
  • 由于構造函數上有 @Autowired 注解,Spring 會自動查找合適的 AnotherService bean 實例并注入到 MyService 中。

這種方式結合了 Lombok 的自動代碼生成功能和 Spring 的依賴注入功能,使得代碼更為簡潔。Fk628資訊網——每日最新資訊28at.com

但是,使用此技巧時要確保團隊成員都理解其背后的含義,以避免混淆。Fk628資訊網——每日最新資訊28at.com

@Delegate

@Delegate可以讓你的類使用其他類的方法,而不需要自己寫代碼。Fk628資訊網——每日最新資訊28at.com

比如,你有一個類叫做A,它有一個方法叫做sayHello(),你想讓另一個類B也能用這個方法,那就可以在B類中加上一個A類型的字段,并在這個字段上加上@Delegate注解,這樣,B類就可以直接調用sayHello()方法,就像它是自己的方法一樣。看個例子:Fk628資訊網——每日最新資訊28at.com

// 一個類,有一個方法public class A {    public void sayHello() {        System.out.println("Hello");    }}// 一個類,委托了A類的方法public class B {    @Delegate // 委托A類的方法    private A a = new A();    public static void main(String[] args) {        B b = new B();        b.sayHello(); // 調用A類的方法    }}

這樣寫最大的好處就是可以避免類的層次過深或者耦合過緊,提高代碼的可讀性和可維護性,各種繼承來繼承去是真的看得頭疼。Fk628資訊網——每日最新資訊28at.com

@Cleanup

@Cleanup可以自動管理輸入輸出流等各種需要釋放的資源,確保安全地調用close方法。Fk628資訊網——每日最新資訊28at.com

它的使用方法是在聲明的資源前加上@Cleanup,例如:Fk628資訊網——每日最新資訊28at.com

@Cleanup InputStream in = new FileInputStream("some/file");

這樣,當你的代碼執行完畢后,Lombok會自動在一個try-finally塊中調用in.close()方法,釋放資源。Fk628資訊網——每日最新資訊28at.com

如果要釋放資源的方法名不是close,也可以指定要調用的方法名,例如:Fk628資訊網——每日最新資訊28at.com

@Cleanup("release") MyResource resource = new MyResource();

Lombok會自動在try-finally塊中調用resource.release()方法,釋放資源。Fk628資訊網——每日最新資訊28at.com

可以看到,這比手動寫try-finally要簡潔得太多了,只要使用@Cleanup就能管理任何有無參方法的資源,指定正確的方法名即可。Fk628資訊網——每日最新資訊28at.com

@Singular 和 @Builder 組合

@Builder讓你的類支持鏈式構造,而@Singular讓集合類型字段可以更方便的維護。Fk628資訊網——每日最新資訊28at.com

@Singular注解可以用在集合類型的字段上,它會生成兩個方法,一個是添加單個元素的方法,一個是添加整個集合的方法。這兩個方法可以和 @Builder 生成的其他方法一起鏈式調用,給你的類的所有字段賦值。Fk628資訊網——每日最新資訊28at.com

這么講可能有點懵,直接看示例:Fk628資訊網——每日最新資訊28at.com

@Data@Builderpublic class User {    private String name;    private int age;    @Singular    private List<String> hobbies;}// 使用 @Builder 和 @Singular 生成的方法User user = User.builder()    .name("練習時長兩年半")    .age(28)    .hobby("籃球") // 添加單個元素    .hobby("唱歌") // 添加單個元素    .hobbies(Arrays.asList("跳舞", "其他")) // 添加整個集合    .build(); // 構造 User 對象

可以看出,使用 @Singular 注解的好處是,你可以靈活地添加集合類型的字段,而不需要自己創建和初始化集合對象。Fk628資訊網——每日最新資訊28at.com

另外,使用 @Singular 注解生成的集合字段,在調用 build() 方法后,會被轉換為不可變的集合,這樣可以保證對象的不變性和線程安全性。你也可以使用 clear() 方法來清空集合字段,例如:Fk628資訊網——每日最新資訊28at.com

User user = User.builder()    .name("簽")    .age(28)    .hobby("說唱")    .hobby("跳舞")    .clearHobbies() // 清空集合字段    .hobby("踩縫紉機") // 重新添加元素    .build();

但需要注意的是,如果你的類繼承了一個父類,那么 @Builder 只會生成當前類的字段和參數,不包括父類的。Fk628資訊網——每日最新資訊28at.com

@With

允許你創建一個新的對象,該對象是當前對象的副本,但某些字段的值已被更改。Fk628資訊網——每日最新資訊28at.com

@With  public class Person {      private String name;      private int age;  }    Person person = new Person("Alice", 30);  // 創建一個新的 Person 對象,其 name 為 "Alice",但 age 為 31Person updatedPerson = person.withAge(31);

結尾

請注意,盡管 Lombok 提供了許多方便的功能,但過度使用或不當使用可能會導致代碼難以理解和維護。Fk628資訊網——每日最新資訊28at.com

因此,在使用這些功能時,務必始終保持審慎,并且要充分考慮其影響。Fk628資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-87047-0.html盤點Lombok的幾個操作,你記住了嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 前端開發中大并發量如何控制并發數

下一篇: Axios 跨端架構是如何實現的?

標簽:
  • 熱門焦點
Top