溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Lombok怎么在java中使用

發布時間:2021-03-24 17:14:49 來源:億速云 閱讀:159 作者:Leah 欄目:編程語言

Lombok怎么在java中使用?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

Lombok是什么?

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

如何安裝Lombok?

如何安裝使用Lombok呢?

方法一

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

方法二

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

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

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

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

如何使用Lombok?

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

  • @Data

  • @Setter @Getter

  • @NonNull

  • @Synchronized

  • @ToString

  • @EqualsAndHashCode

  • @Cleanup

  • @SneakyThrows

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

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

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

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

該方法大家應該非常熟悉,但需要注意的是:@ToString有多個屬性可以進一步設置:

  • callSuper 是否輸出父類的toString方法,默認為false

  • includeFieldNames 是否包含字段名稱,默認為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的連接關閉。
使用方法:

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

看完上述內容,你們掌握Lombok怎么在java中使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女