最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入了解java Lombok的使用方法

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

前言

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

Lombok是什么?

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

如何安裝Lombok?

如何安裝使用Lombok呢?

方法一

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

方法二

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

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

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

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

如何使用Lombok?

Lombok提供注解方式來提高代碼的簡潔性,常用注解有:

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

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

該注解相當(dāng)于同時加上以下注解@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

作用于屬性上,自動生成get,set方法.

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

等價源碼:

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

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

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

生成等價源碼:

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有多個屬性可以進(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;
}

等價源碼:

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();
}
}

等價源碼:

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é)

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

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

相關(guān)文章

最新評論

广灵县| 扬州市| 新余市| 郑州市| 合山市| 大城县| 西丰县| 宜宾市| 蛟河市| 正阳县| 光山县| 武宁县| 安远县| 平湖市| 山西省| 扶沟县| 鸡泽县| 宁陕县| 阳谷县| 勃利县| 会同县| 曲周县| 甘洛县| 泰宁县| 正定县| 襄樊市| 金溪县| 宝鸡市| 南平市| 青川县| 保德县| 延津县| 清镇市| 邯郸市| 嘉善县| 四会市| 平凉市| 清远市| 阿克| 江油市| 莱芜市|