国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用lombok來簡化你的Java Bean

taowen / 1164人閱讀

摘要:可標(biāo)注在類內(nèi)部生成一個(gè)名為類名的內(nèi)部類,用于快速構(gòu)建。流程是這樣的編譯源代碼,并生成語法樹尋找實(shí)現(xiàn)了的代碼,并調(diào)用。尋找被標(biāo)注了注解的類,修改生成的語法樹。將語法樹生成為字節(jié)碼就到這里了它還具備很多好用的功能,你可以去這里看看。

能做什么?

在使用lombok之前:

public class Book {

    private Integer id;

    private String title;

    private Date releaseDate;

    private Double price;

    private String[] authors;

    private String publisher;

    public Integer getId() {
        return id;
    }

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

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Date getReleaseDate() {
        return releaseDate;
    }

    public void setReleaseDate(Date releaseDate) {
        this.releaseDate = releaseDate;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public String[] getAuthors() {
        return authors;
    }

    public void setAuthors(String[] authors) {
        this.authors = authors;
    }

    public String getPublisher() {
        return publisher;
    }

    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Book)) return false;
        if (!super.equals(o)) return false;

        Book book = (Book) o;

        if (getId() != null ? !getId().equals(book.getId()) : book.getId() != null) return false;
        if (getTitle() != null ? !getTitle().equals(book.getTitle()) : book.getTitle() != null) return false;
        if (getReleaseDate() != null ? !getReleaseDate().equals(book.getReleaseDate()) : book.getReleaseDate() != null)
            return false;
        if (getPrice() != null ? !getPrice().equals(book.getPrice()) : book.getPrice() != null) return false;
        // Probably incorrect - comparing Object[] arrays with Arrays.equals
        if (!Arrays.equals(getAuthors(), book.getAuthors())) return false;
        return getPublisher() != null ? getPublisher().equals(book.getPublisher()) : book.getPublisher() == null;
    }

    @Override
    public int hashCode() {
        int result = super.hashCode();
        result = 31 * result + (getId() != null ? getId().hashCode() : 0);
        result = 31 * result + (getTitle() != null ? getTitle().hashCode() : 0);
        result = 31 * result + (getReleaseDate() != null ? getReleaseDate().hashCode() : 0);
        result = 31 * result + (getPrice() != null ? getPrice().hashCode() : 0);
        result = 31 * result + Arrays.hashCode(getAuthors());
        result = 31 * result + (getPublisher() != null ? getPublisher().hashCode() : 0);
        return result;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", title="" + title + """ +
                ", releaseDate=" + releaseDate +
                ", price=" + price +
                ", authors=" + Arrays.toString(authors) +
                ", publisher="" + publisher + """ +
                "}";
    }
}

在使用之后:

@Data
public class Book {

    private Integer id;

    private String title;

    private Date releaseDate;

    private Double price;

    private String[] authors;

    private String publisher;
}

并且從功能上,使用后=使用前。
說的簡單點(diǎn):從此以后不需要寫Getter、SettertoString、hashCode、canEqual、constructor這些大部分相似,卻又不得不寫的代碼了。

怎么用?

一共有三個(gè)步驟

為你的開發(fā)工具安裝插件。

IntelliJ IDEA: settings->Plugins->Browse Repositories->搜索Lombok Plugin->install

Eclipse / MyEclipse / Spring Tool Suite / JBoss Developer Studio: 看這里

Netbeans: 看這里

下載并導(dǎo)入Jar包,下載地址

在需要的類上標(biāo)注注解

目前我使用的版本是1.16.16,有下面幾個(gè)常用注解:

@Date

生成GetterSettertoString、equals、hashCode方法。

可標(biāo)注:Class

@Value

生成Getter、toString、equals、hashCode、還有全字段的構(gòu)造方法。并且會(huì)將字段全都添加final。

可標(biāo)注:Class

@Builder

在類內(nèi)部生成一個(gè)名為類名+Builder的內(nèi)部類,用于快速構(gòu)建。

可標(biāo)注:Class

你可以這樣使用它:

@Builder
public class Book {

    private Integer id;

    private String title;

    private Date releaseDate;

    private Double price;

    private String[] authors;

    private String publisher;

}
public static void main(String[] args) {
    Book book = Book.builder().id(1).title("書名").build();
}
@Getter/@Setter

生成GetterSetter方法。如果標(biāo)注在類上則會(huì)生成這個(gè)類中所有字段的GetterSetter方法。

可標(biāo)注:Field,Class

@NonNull

為你的構(gòu)造函數(shù)、Setter添加空值校驗(yàn)。標(biāo)注的字段賦值為空時(shí),會(huì)拋出NullPointerException。

可標(biāo)注:Field,Method,Parameter,Local Variable

為什么?

自從Java 6起,Javac就支持了一個(gè)名叫JSR 269 Pluggable Annotation Processing API的規(guī)范,它的作用就是:如果你實(shí)現(xiàn)了這個(gè)API,在Javac編譯時(shí)就會(huì)得到調(diào)用。而lombok正是運(yùn)用了這一點(diǎn)。

流程是這樣的:

Javac編譯源代碼,并生成語法樹(AST)

Javac尋找實(shí)現(xiàn)了JSR 269 .... API的代碼(lombok),并調(diào)用。

lombok尋找被標(biāo)注了注解的類,修改Javac生成的語法樹(AST)。

Javac將語法樹生成為字節(jié)碼(.class)

就到這里了

它還具備很多好用的功能,你可以去這里看看。

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70132.html

相關(guān)文章

  • 使用Lombok精簡你的項(xiàng)目代碼

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

    AJie 評(píng)論0 收藏0
  • Lombok使用

    摘要:為方法或構(gòu)造函數(shù)的參數(shù)生成檢查語句,相當(dāng)于生成的檢查語句會(huì)插入到方法的最前端,如果是構(gòu)造函數(shù),則在或調(diào)用之后插入檢查。 Lombok簡介 Lombok是一個(gè)可以通過簡單的注解形式來幫助我們簡化消除一些必須有但顯得很臃腫的Java代碼的工具,通過使用對應(yīng)的注解,可以在編譯源碼的時(shí)候生成對應(yīng)的方法。 ...

    張金寶 評(píng)論0 收藏0
  • Lombok安裝及Spring Boot集成Lombok

    摘要:注意,其是在編譯源碼過程中,幫你自動(dòng)生成的。就是說,將極大減少你的代碼總量。注解和類似,區(qū)別在于它會(huì)把所有成員變量默認(rèn)定義為修飾,并且不會(huì)生成方法。不同的日志注解總結(jié)如下上面是注解,下面是編譯后的代碼參考資料下的安裝以及使用簡介注解介紹 Lombok有什么用 在我們實(shí)體Bean中有大量的Getter/Setter方法以及toString, hashCode等可能不會(huì)用到,但是某些時(shí)候仍...

    dkzwm 評(píng)論0 收藏0
  • SpringBoot 實(shí)戰(zhàn) (四) | 使用 LomBok

    摘要:創(chuàng)建對象工具類設(shè)置父類設(shè)置屬性的使用范圍,如等,也可以設(shè)置屬性是否被修飾。所以顯示的是按鈕重啟。即使沒有重寫方法,依然可以調(diào)用,而且結(jié)果和重寫了方法一樣。最后奉上項(xiàng)目完整代碼后語以上就是我對插件的理解與使用,希望對你們有幫助。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問題或建議,請后臺(tái)留言,我會(huì)盡力解決你的問題。 前言 上周去了開年會(huì),去的地方是溫泉度假村。老實(shí)說,我是無感的,90% 是因?yàn)闆]中...

    DandJ 評(píng)論0 收藏0
  • 第二十九章:基于SpringBoot平臺(tái)使用Lombok優(yōu)雅的編碼

    摘要:還提供了全部參數(shù)的構(gòu)造函數(shù)的自動(dòng)生成,該注解的作用域也是只有在實(shí)體類上,因?yàn)橹挥袑?shí)體類才會(huì)存在構(gòu)造函數(shù)。當(dāng)然除了全部參數(shù)的構(gòu)造函數(shù),還提供了沒有參數(shù)的構(gòu)造函數(shù),使用方式與一致。 Lombok對于Java偷懶開發(fā)者來說應(yīng)該是比較中意的,恰恰筆者就是一個(gè)喜歡在小細(xì)節(jié)上偷懶來提高開發(fā)效率的人。所以在技術(shù)框架的海洋里尋找了很久才在GitHub開源平臺(tái)上找到,而在這之前國外很多程序猿一直使用該框...

    fanux 評(píng)論0 收藏0

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

0條評(píng)論

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