Lombok的介紹與使用

Lombok是啥?

一個java庫,一個構(gòu)建工具。通過簡單的注解來實現(xiàn)精簡代碼,消除冗長代碼和提高開發(fā)效率的目的。

為啥要使用Lombok

大家在寫bug的時候,肯定和很多的實體打過交道,然后我們要寫getter()、setter()、toString()等等。

不,我們不用寫,不管是idea還是eclipse都有快捷鍵給我們生成getter()、setter()。所以我們還是能很快的開發(fā)。

可是還是有下面的一些問題:

  • 眾多的getter()、setter(),占據(jù)整個類,影響代碼的可讀性。如果我們開發(fā)將字段穿插在 getter()、setter()之間呢?
public class User {
    /** id */
    private Long id;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    /** 姓名 */
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

上面和下面的,很明顯下面的更直觀,一目了然

public class User {
    /** id */
    private Long id;

    /** 姓名 */
    private String name;
}
  • 我們新增一個字段,那么我們就要新增對應(yīng)的 getter()、setter(),修改 toString() 等等;
  • 我們刪除一個字段,要把對應(yīng)的getter()、setter()刪除,修改toString()等等;
  • 我們修改一個字段的類型,比如 Integer 修改成 String。那我們要刪除 getter()、setter() 先,然后生成getter()、setter(),再修改 toString()等等。
  • 如果一個實體有很多的屬性字段,那么修改其中一個,定位不容易。
  • 如果我們想用流式風(fēng)格創(chuàng)建對象,又要寫一堆代碼。
  • 如果我們想生成帶所有參數(shù)的構(gòu)造器,又如何?

Lombok能解決上面所有的問題,只需要幾個注解即可。

Lombok安裝

IntelliJ IDEA

  • Lombok插件安裝

FileSettings...PluginsBrowse repositories → 搜索Lombok → 安裝插件 。

具體可參考下圖:

install_1.png
install_2.png

安裝完畢,重啟idea,那我們就安裝好Lombok插件了

  • 引入jar包

插件安裝完畢,我們只要在對應(yīng)的項目中引入jar包,就可以愉快的開發(fā)了。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.2</version>
</dependency>

Lombok注解

@Data

這個注解會幫我們生成getter、setter、equals、hashCode、toString等方法。可以說很強大了。

image.png

@Getter、@Setter

這兩個注解就是分別生成我們的getter和setter。可以放在類或者屬性上

  • 放在類上,所有屬性都生成getter和setter
  • 放在屬性上,只有對應(yīng)的屬性生成getter和setter

@ToString

在類上使用,生成toString()方法。

  • @ToString(of = {"id", "name"})
    指定包含的屬性

  • @ToString(exclude = {"id", "name"})
    指定排除的屬性

  • @ToString(callSuper = true)
    輸出父類的屬性

@EqualsAndHashCode

在類上使用,生成equals和hashcode方法

@Slf4j

我們開發(fā)的時候,很多時候都是要記錄日志的,便于以后的問題排查。經(jīng)常要寫類似于下面的代碼。

private static final Logger log = LoggerFactory.getLogger(User.class);

@Slf4j幫我們自動生成這行代碼。在類上使用

@NoArgsConstructor

生成無參構(gòu)造器

@AllArgsConstructor

生成帶所有屬性的構(gòu)造器,不生成默認的無參構(gòu)造器

@Builder

用于類上,生成流式API。當我們創(chuàng)建新的對象時,會使我們的代碼更優(yōu)雅。

User user = new User();
user.setId(1L);
user.setName("roach");
user.setGender(1);
user.setBirthday(new Date());
user.setAge(18);

// 流式方式設(shè)置屬性值
User user1 = User.builder()
        .id(1L)
        .name("roach")
        .gender(1)
        .birthday(new Date())
        .age(18)
    .build();
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 01 又是一個周二的晚上七點,照舊是女兒的舞蹈才藝班,抱著讓這個體重已經(jīng)超重的小胖妞多煅煉身體,再順帶減減肥的初衷...
    小潘在等你閱讀 461評論 2 7
  • 下班了,拖著拖著,不想回家。 家目前暫時對我已經(jīng)失去了吸引力,要知道,從前還沒下班前心已經(jīng)在家了,多么想要快快躲進...
    楊姣娜閱讀 290評論 0 1
  • 1.區(qū)別對待不同的客戶,需要腦子活一點 2.初次接觸時掌握客戶的性格,需要同理贊美 3.跟進過程中要分層次挖掘客戶...
    漾阿鏡閱讀 193評論 0 0
  • 1, 冷信號,沒有被訂閱的信號 2, 熱心好,有被訂閱的信號 MVVM 雙向綁定 1, 利于代碼維護 2,一個文件...
    fordring2008閱讀 381評論 0 0

友情鏈接更多精彩內(nèi)容