亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Lombok使用

張金寶 / 1221人閱讀

摘要:為方法或構(gòu)造函數(shù)的參數(shù)生成檢查語(yǔ)句,相當(dāng)于生成的檢查語(yǔ)句會(huì)插入到方法的最前端,如果是構(gòu)造函數(shù),則在或調(diào)用之后插入檢查。

Lombok簡(jiǎn)介

Lombok是一個(gè)可以通過(guò)簡(jiǎn)單的注解形式來(lái)幫助我們簡(jiǎn)化消除一些必須有但顯得很臃腫的Java代碼的工具,通過(guò)使用對(duì)應(yīng)的注解,可以在編譯源碼的時(shí)候生成對(duì)應(yīng)的方法。

簡(jiǎn)單來(lái)說(shuō),我們平時(shí)開(kāi)發(fā)過(guò)程中總是要花很多時(shí)間為Java Bean 去創(chuàng)建gettersetter方法,當(dāng)類里面的屬性很多時(shí)則創(chuàng)建的gettersetter就很多,代碼就很長(zhǎng)。而lombok就可以為我們省去創(chuàng)建gettersetter方法的麻煩,代碼也會(huì)更加簡(jiǎn)潔。

Lombok官方地址: https://projectlombok.org/

使用方法 一、安裝插件

操作步驟:File -> Settings... -> Plugins -> Browse repositories... -> 輸入Lombok搜索并安裝,安裝完成后重啟IntelliJ IDEA。

二、引用jar包

如果是使用Maven構(gòu)建項(xiàng)目,則添加以下依賴:


    
        org.projectlombok
        lombok
        1.16.18
        provided
    

否則直接下載jar包并引入到項(xiàng)目中,下載地址為:下載Lombok

三、lombok使用

lombok的使用主要是通過(guò)注解方式,官網(wǎng)文檔lombok注解 有很詳細(xì)的說(shuō)明。

@@NonNull

@NonNull為方法或構(gòu)造函數(shù)的參數(shù)生成null檢查語(yǔ)句,相當(dāng)于if (param == null) throw new NullPointerException("param");;生成的null檢查語(yǔ)句會(huì)插入到方法的最前端,如果是構(gòu)造函數(shù),則在this()super()調(diào)用之后插入null檢查。

使用lombok,我們可以這樣寫(xiě):

import lombok.NonNull;

public class User extends BaseEntity {
  private String name;
  private String password;
  
  public User(@NonNull Person person) {
    super("Hello");
    this.name = person.getName();
    this.password = person.getPassword();
  }
}

而不使用lombok則是這樣寫(xiě):

import lombok.NonNull;

public class User extends BaseEntity {
  private String name;
  private String password;
  
  public User(@NonNull Person person) {
    super("Hello");
    if (person == null) {
      throw new NullPointerException("person");
    }
    this.name = person.getName();
    this.password = person.getPassword();
  }
}
@Getter/@Setter

使用@Getter/@Setter給字段注解,lombok會(huì)自動(dòng)生成默認(rèn)的getter/setter方法,在Intellij IDEA的Structure欄中可查看這個(gè)類的概要,就可以看到gettersetter方法已被添加到User類中:

在未指定字段修飾符情況下,lombok生成的getter/setter方法是public的,若要修改其修飾符可設(shè)置AccessLevel的值,如:

import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;

public class User {

    private @Getter(AccessLevel.PRIVATE) @Setter String name;

    private @Getter @Setter String password;

}

此時(shí)能看到User類中的getName方法的圖標(biāo)變成了一個(gè)鎖,說(shuō)明getName方法已經(jīng)是private的,將不會(huì)被公開(kāi):

@ToString

使用@ToString會(huì)生成toString()方法,它會(huì)按順序依次打印類名、字段;若想忽略輸出字段,則可以用exclude設(shè)置參數(shù);如果有繼承父類,可以設(shè)置callSupertrue讓其調(diào)用父類toString()方法:

@ToString(exclude = "password", callSuper = true)
public class User extends BaseEntity {

    private @Getter @Setter String name;

    private @Getter @Setter String password;

}
@EqualsAndHashCode

使用@EqualsAndHashCode會(huì)生成hashCode()equals()方法,默認(rèn)會(huì)使用所有非靜態(tài)、非transient字段;
如果想排除某些字段可設(shè)置exclude參數(shù);
如果有繼承父類,可以設(shè)置callSupertrue讓其調(diào)用父類生成的equals()hashCode方法,但是當(dāng)沒(méi)有繼承父類并設(shè)置callSupertrue時(shí)會(huì)在編譯時(shí)報(bào)錯(cuò):

import lombok.*;

@EqualsAndHashCode(exclude = "password")
public class User {

    private @Getter @Setter String name;

    private @Getter @Setter String password;

    @EqualsAndHashCode(callSuper = true)
    public static class Department extends BaseEntity {
        private @Getter @Setter String departmentName;
    }
}

在Intellij IDEA的Structure欄中可查看到有equals()hashCode()方法:

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor
@NoArgsConstructor

生成一個(gè)無(wú)參數(shù)構(gòu)造函數(shù):

@RequiredArgsConstructor

生成構(gòu)造函數(shù);如果帶有參數(shù),則該參數(shù)必須是以final修飾并未初始化的字段或@NonNull注解的并未初始化的字段,參數(shù)的順序和字段在類中的聲明順序一致。

@NonNull注解并未初始化的:

final修飾并未初始化的:

正確和錯(cuò)誤示例:

@AllArgsConstructor

生成全參數(shù)構(gòu)造函數(shù),將類中的每個(gè)字段生成帶有1個(gè)參數(shù)的構(gòu)造函數(shù),例如有3個(gè)字段,則構(gòu)造函數(shù)的參數(shù)為3個(gè):

@Data

@Data包含了@ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor的功能:

@Builder

@Builder為類、構(gòu)造器、方法上生成復(fù)雜的構(gòu)建器API;構(gòu)造實(shí)例時(shí),其屬性不再需要多帶帶set,可以通過(guò)以下方式進(jìn)行實(shí)例化:
Person.builder().name("Adam Savage").city("San Francisco").job("Mythbusters").job("Unchained Reaction").build();

其他注解

val、@Cleanup、@SneakyThrows@Synchronized、@Getter(lazy=true)、@Log、experimental等就不再做介紹,用法和說(shuō)明可查看官網(wǎng)文檔https://projectlombok.org/features/all。

總結(jié)

使用lombok能夠?yàn)槲覀兪∪ナ謩?dòng)創(chuàng)建gettersetter方法的麻煩,lombok 有助于代碼的整潔、效率的提高以及冗余的減少,但也同時(shí)降低了源代碼文件的可讀性和完整性。

不可過(guò)度依賴lombok。

參考

以簡(jiǎn)單的方式消除 Java 的冗長(zhǎng)
Lombok features
lombok

原文地址:https://www.lwhweb.com/2017/11/08/lombok-use/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/70823.html

相關(guān)文章

  • lombok使用

    摘要:雖然有人可能會(huì)說(shuō)里面都自帶自動(dòng)生成這些方法的功能,但是使用會(huì)使你的代碼看起來(lái)更加簡(jiǎn)潔,寫(xiě)起來(lái)也更加方便。使用不使用自動(dòng)生成方法使用不使用自動(dòng)生成無(wú)參數(shù)構(gòu)造函數(shù)。 一、lombok簡(jiǎn)介 lombok是在學(xué)習(xí)過(guò)程中發(fā)現(xiàn)的一個(gè)非常好用的小工具,用了之后感覺(jué)的確很不錯(cuò),所以特此來(lái)推薦一下。 lombok的官方地址:https://projectlombok.org/ lombok的Github...

    MobService 評(píng)論0 收藏0
  • 使用神器Lombok優(yōu)雅編碼

    摘要:提高編碼效率使代碼更簡(jiǎn)潔消除冗長(zhǎng)代碼避免修改字段名字時(shí)忘記修改方法名提高下逼格以上就是的優(yōu)點(diǎn),當(dāng)然,的優(yōu)點(diǎn)遠(yuǎn)遠(yuǎn)不止以上幾點(diǎn),使用,你可以更加優(yōu)雅高效的編輯代碼。實(shí)戰(zhàn)完成了上述準(zhǔn)備之后,就可以愉快的使用進(jìn)行編碼了。接下來(lái)是使用簡(jiǎn)化后的代碼。 Lombok介紹 近來(lái)偶遇一款擼碼神器,介紹給大家~相信許多小伙伴都深有體會(huì),POJO類中的千篇一律的getter/setter,construct...

    _ang 評(píng)論0 收藏0
  • 途牛原創(chuàng)|使用 lombok 簡(jiǎn)化 Java 代碼

    摘要:使用,簡(jiǎn)化代碼為了簡(jiǎn)化與,提供了一種機(jī)制,幫助我們自動(dòng)生成這些樣板代碼。但是,在實(shí)際項(xiàng)目中,完全沒(méi)有使用到。源碼審查是一個(gè)源碼審查工具。最新版已經(jīng)支持的全部注解,不再認(rèn)為是沒(méi)有使用的變量。 一個(gè)典型的 Java 類 public class A { private int a; private String b; public int getA() { ret...

    RyanHoo 評(píng)論0 收藏0
  • 使用Lombok來(lái)精簡(jiǎn)你的項(xiàng)目代碼

    摘要:什么是一言以蔽之是一種工具,提供了簡(jiǎn)單的注解來(lái)簡(jiǎn)化我們的重復(fù)冗長(zhǎng)代碼。但在實(shí)際的項(xiàng)目中,我們常常只在定義的時(shí)候用上,而在業(yè)務(wù)代碼中很少用到??偨Y(jié)是個(gè)非常有用的工具,能夠幫助我們精簡(jiǎn)很多臃腫冗長(zhǎng)的代碼,不過(guò)也有其局限性,推薦在定義中使用。 什么是Lombok 一言以蔽之:lombok是一種工具,提供了簡(jiǎn)單的注解來(lái)簡(jiǎn)化我們的重復(fù)冗長(zhǎng)Java代碼。比如一個(gè)Java Bean,注解了lombo...

    AJie 評(píng)論0 收藏0
  • Lombok介紹、使用方法和總結(jié)

    摘要:使用方法能以簡(jiǎn)單的注解形式來(lái)簡(jiǎn)化代碼,提高開(kāi)發(fā)人員的開(kāi)發(fā)效率。能通過(guò)注解的方式,在編譯時(shí)自動(dòng)為屬性生成構(gòu)造器方法。出現(xiàn)的神奇就是在源碼中沒(méi)有和方法,但是在編譯生成的字節(jié)碼文件中有和方法。沒(méi)法實(shí)現(xiàn)多種參數(shù)構(gòu)造器的重載。 1 Lombok背景介紹 官方介紹如下: Project Lombok makes java a spicier language by addi...

    30e8336b8229 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

張金寶

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<