欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入了解java Lombok的使用方法

 更新時(shí)間:2019年06月24日 08:33:54   作者:鞠騫的博客  
這篇文章主要介紹了深入了解java Lombok的使用,Lombok是一個(gè)通過(guò)注解以達(dá)到減少代碼的Java庫(kù),如通過(guò)注解的方式減少get,set方法,構(gòu)造方法等,需要的朋友可以參考下

前言

在Java中,封裝是一個(gè)非常好的機(jī)制,最常見(jiàn)的封裝莫過(guò)于get,set方法了,無(wú)論是Intellij idea 還是Eclipse,都提供了快速生成get,set方法的快捷鍵,使用起來(lái)很是方便,其實(shí),我們還有更方便的辦法,就是今天的主角-Lombok

Lombok是什么?

Lombok是一個(gè)通過(guò)注解以達(dá)到減少代碼的Java庫(kù),如通過(guò)注解的方式減少get,set方法,構(gòu)造方法等。

如何安裝Lombok?

如何安裝使用Lombok呢?

方法一

通過(guò)向lib文件夾中添加lombok.jar包即可,

方法二

如果使用的是Maven,則可在項(xiàng)目的pom.xml文件中添加以下依賴(lài):

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

通過(guò)以上兩種方法的確可以使用Lombok的相關(guān)API了,但無(wú)論是Intelij idea,還是Eclipse默認(rèn)情況下是不能識(shí)別的,我們還要讓idea識(shí)別起來(lái)。
Intellij Idea方法:

File->settings->Plugins->Browse repositories->Lombok

如何使用Lombok?

Lombok提供注解方式來(lái)提高代碼的簡(jiǎn)潔性,常用注解有:

  • @Data
  • @Setter @Getter
  • @NonNull
  • @Synchronized
  • @ToString
  • @EqualsAndHashCode
  • @Cleanup
  • @SneakyThrows

下面分別介紹每個(gè)方法的作用以及對(duì)應(yīng)的源代碼 @Data

該注解相當(dāng)于同時(shí)加上以下注解@Setter @Getter,@ToString,@EqualsAndHashCode,作用于類(lèi)中 使用:

/**
* author: andy
* date: 17-4-22
* blog: www.andyqian.com
*/
@Data
public class Person {
private String name;
private String address;
private String city;
private String state;
private String zip;
private Date brithday;
}

效果如下:

@Getter@Setter

作用于屬性上,自動(dòng)生成get,set方法.

/**
* author: andy
* date: 17-4-22
* blog: www.andyqian.com
*/
public class Person {
@Getter@Setter
private String name;
}

等價(jià)源碼:

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

@NonNull

該注解快速判斷是否為空,如果為空,則拋出java.lang.NullPointerException
使用方法:

/**
* author: andy
* date: 17-4-22
* blog: www.andyqian.com
*/
public class Person {
private String name;
@Setter@Getter@NonNull
private List<Person> member;
}

源碼:

@NonNull
private List<Person> members;
public Family(@NonNull final List<Person> members) {
if (members == null) throw new java.lang.NullPointerException("members");
this.members = members;
}
@NonNull
public List<Person> getMembers() {
return members;
}
public void setMembers(@NonNull final List<Person> members) {
if (members == null) throw new java.lang.NullPointerException("members");
this.members = members;
}

@Synchronized

該注解自動(dòng)添加到同步機(jī)制,有趣的是,生成的代碼并不是直接鎖方法,而是鎖代碼塊, 作用范圍是方法上
使用方法:

private DateFormat format = new SimpleDateFormat("MM-dd-YYYY");
@Synchronized
public String synchronizedFormat(Date date) {
return format.format(date);
}

生成等價(jià)源碼:

private final java.lang.Object $lock = new java.lang.Object[0];
private DateFormat format = new SimpleDateFormat("MM-dd-YYYY");
public String synchronizedFormat(Date date) {
synchronized ($lock) {
return format.format(date);
}
}

@ToString

該方法大家應(yīng)該非常熟悉,但需要注意的是:@ToString有多個(gè)屬性可以進(jìn)一步設(shè)置:

  • callSuper 是否輸出父類(lèi)的toString方法,默認(rèn)為false
  • includeFieldNames 是否包含字段名稱(chēng),默認(rèn)為true
  • exclude 排除生成tostring的字段

使用方法:

/**
* author: andy
* date: 17-4-22
* blog: www.andyqian.com
*/
@ToString(callSuper = true,exclude ={"name"})
public class Person {
private String name;
private String address;
}

等價(jià)源碼:

public String toString() {
return "Person{" +
"address='" + address + '\'' +
'}';
}

@Cleanup

注釋可用于確保已分配的資源被釋放,如IO的連接關(guān)閉。
使用方法:

public void testCleanUp() {
try {
@Cleanup ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(new byte[] {'Y','e','s'});
System.out.println(baos.toString());
} catch (IOException e) {
e.printStackTrace();
}
}

等價(jià)源碼:

public void testCleanUp() {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
baos.write(new byte[]{'Y', 'e', 's'});
System.out.println(baos.toString());
} finally {
baos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}

小結(jié)

通過(guò)前面從安裝,到使用的案例章節(jié)的講解,希望Lbok能夠給你帶來(lái)更大的coding快感。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • idea 解決用骨架創(chuàng)建項(xiàng)目過(guò)慢的操作方式

    idea 解決用骨架創(chuàng)建項(xiàng)目過(guò)慢的操作方式

    這篇文章主要介紹了idea 解決用骨架創(chuàng)建項(xiàng)目過(guò)慢的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • SpringBoot實(shí)現(xiàn)發(fā)送郵件功能過(guò)程圖解

    SpringBoot實(shí)現(xiàn)發(fā)送郵件功能過(guò)程圖解

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)發(fā)送郵件功能過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Intellij IDEA 閱讀源碼的 4 個(gè)絕技(必看)

    Intellij IDEA 閱讀源碼的 4 個(gè)絕技(必看)

    今天小編給大家分享Intellij IDEA 閱讀源碼的 4 個(gè)絕技,熟練的運(yùn)用 IDEA 中各個(gè)小技巧,讓閱讀跟蹤源碼變得更輕松,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-04-04
  • java中常見(jiàn)的中文亂碼總結(jié)

    java中常見(jiàn)的中文亂碼總結(jié)

    本文主要介紹了java中常見(jiàn)的中文亂碼以及解決方法,主要包括字節(jié)碼文件讀取時(shí)出現(xiàn)的亂碼問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有很好的參考價(jià)值,感興趣的朋友跟隨小編一起看看吧
    2017-03-03
  • Java中各種集合判空方法總結(jié)

    Java中各種集合判空方法總結(jié)

    最近接觸集合比較多,經(jīng)常對(duì)于集合是否為空做判斷,下面這篇文章主要給大家介紹了關(guān)于Java中各種集合判空方法總結(jié)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • jedis獲取redis中二進(jìn)制圖片轉(zhuǎn)Base64方式

    jedis獲取redis中二進(jìn)制圖片轉(zhuǎn)Base64方式

    這篇文章主要介紹了jedis獲取redis中二進(jìn)制圖片轉(zhuǎn)Base64方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java實(shí)現(xiàn)短信驗(yàn)證碼的示例代碼

    Java實(shí)現(xiàn)短信驗(yàn)證碼的示例代碼

    本文主要介紹了Java實(shí)現(xiàn)短信驗(yàn)證碼的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Mybatis-Plus中IdType.AUTO局部配置不生效的問(wèn)題解決

    Mybatis-Plus中IdType.AUTO局部配置不生效的問(wèn)題解決

    本文主要介紹了Mybatis-Plus中IdType.AUTO局部配置不生效的問(wèn)題解決,數(shù)據(jù)庫(kù)插入數(shù)據(jù)時(shí),id的默認(rèn)生成方式還是雪花算法,局部配置沒(méi)有生效,下面就來(lái)解決一下,感興趣的可以了解一下
    2023-09-09
  • Java運(yùn)行時(shí)多態(tài)性的實(shí)現(xiàn)

    Java運(yùn)行時(shí)多態(tài)性的實(shí)現(xiàn)

    Java運(yùn)行時(shí)多態(tài)性的實(shí)現(xiàn)...
    2006-12-12
  • Spring bean為什么默認(rèn)是單例

    Spring bean為什么默認(rèn)是單例

    這篇文章主要介紹了Spring bean為什么默認(rèn)是單例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08

最新評(píng)論