深入了解java Lombok的使用方法
前言
在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文件中添加以下依賴:
<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,作用于類中 使用:
/**
* 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 是否輸出父類的toString方法,默認(rèn)為false
- includeFieldNames 是否包含字段名稱,默認(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ò)慢的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
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è)絕技,熟練的運(yùn)用 IDEA 中各個(gè)小技巧,讓閱讀跟蹤源碼變得更輕松,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-04-04
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)證碼的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
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)...2006-12-12

