lombok幾個基本註解的使用@Data@AllArgsConstructor@NoArgsConstructor@Builder
lombok是一款在java開發中簡潔化程式碼十分有用的外掛工具,這篇部落格對較為常用的幾種註解進行記錄,分享學習心得。
使用lombok註解,目的和作用就在於不用再去寫經常反覆去寫的(如Getter,Setter,Constructor等)一些程式碼了。
首先,用到的幾個註解:
- @Data
使用這個註解,就不用再去手寫Getter,Setter,equals,canEqual,hasCode,toString等方法了,註解後在編譯時會自動加進去。 - @AllArgsConstructor
使用後新增一個建構函式,該建構函式含有所有已宣告欄位屬性引數 - @NoArgsConstructor
使用後建立一個無參建構函式 - @Builder
關於Builder較為複雜一些,Builder的作用之一是為了解決在某個類有很多建構函式的情況,也省去寫很多建構函式的麻煩,在設計模式中的思想是:用一個內部類去例項化一個物件,避免一個類出現過多建構函式,
然後,通過一個簡單的程式碼例子說明:
1)首先,建立一個簡單的類,並用lombok進行註解:注意這是註解前的程式碼,可以與後面貼出的註解生成的程式碼進行比較
@Data //生成getter,setter等函式
@AllArgsConstructor //生成全引數建構函式
@NoArgsConstructor//生成無參建構函式
@Builder
public class test1 {
String name;
String age;
String sex;
}
2)測試入口:
public static void main(String[] args) {
//使用@Builder註解後,可以直接通過Builder設定欄位引數
test1 t1=new test1.test1Builder()
.name("wang")
.age("12")
.sex("man")
.build();
System.out.println("name is"+t1.getName()+'\n'+"age is :"+t1.getAge());
}
3)通過檢視編譯後的類,比較註解前後的程式碼量,發現會省去了很多程式碼的書寫:
public class test1 {
String name;
String age;
String sex;
public static test1.test1Builder builder() {
return new test1.test1Builder();
}
public String getName() {
return this.name;
}
public String getAge() {
return this.age;
}
public String getSex() {
return this.sex;
}
public void setName(String name) {
this.name = name;
}
public void setAge(String age) {
this.age = age;
}
public void setSex(String sex) {
this.sex = sex;
}
public boolean equals(Object o) {
if (o == this) {
return true;
} else if (!(o instanceof test1)) {
return false;
} else {
test1 other = (test1)o;
if (!other.canEqual(this)) {
return false;
} else {
label47: {
Object this$name = this.getName();
Object other$name = other.getName();
if (this$name == null) {
if (other$name == null) {
break label47;
}
} else if (this$name.equals(other$name)) {
break label47;
}
return false;
}
Object this$age = this.getAge();
Object other$age = other.getAge();
if (this$age == null) {
if (other$age != null) {
return false;
}
} else if (!this$age.equals(other$age)) {
return false;
}
Object this$sex = this.getSex();
Object other$sex = other.getSex();
if (this$sex == null) {
if (other$sex != null) {
return false;
}
} else if (!this$sex.equals(other$sex)) {
return false;
}
return true;
}
}
}
protected boolean canEqual(Object other) {
return other instanceof test1;
}
public int hashCode() {
int PRIME = true;
int result = 1;
Object $name = this.getName();
int result = result * 59 + ($name == null ? 43 : $name.hashCode());
Object $age = this.getAge();
result = result * 59 + ($age == null ? 43 : $age.hashCode());
Object $sex = this.getSex();
result = result * 59 + ($sex == null ? 43 : $sex.hashCode());
return result;
}
public String toString() {
return "test1(name=" + this.getName() + ", age=" + this.getAge() + ", sex=" + this.getSex() + ")";
}
@ConstructorProperties({"name", "age", "sex"})
public test1(String name, String age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public test1() {
}
public static class test1Builder {
private String name;
private String age;
private String sex;
test1Builder() {
}
public test1.test1Builder name(String name) {
this.name = name;
return this;
}
public test1.test1Builder age(String age) {
this.age = age;
return this;
}
public test1.test1Builder sex(String sex) {
this.sex = sex;
return this;
}
public test1 build() {
return new test1(this.name, this.age, this.sex);
}
public String toString() {
return "test1.test1Builder(name=" + this.name + ", age=" + this.age + ", sex=" + this.sex + ")";
}
}
}
總結:lombok註解使用起來會很方便,可以多去了解不同註解的作用。
另貼一些相關的部落格:
lombok 安裝使用及一些註解功能:
https://blog.csdn.net/motui/article/details/79012846
java Builder:
http://www.cnblogs.com/moonz-wu/archive/2011/01/11/1932473.html
https://www.cnblogs.com/begin1949/p/4930896.html
相關文章
- lombok幾個基本註解的使用@Data@AllArgsConstructor@NoArgsConstructorLombokStruct
- @NoArgsConstructor、@Getter、@Setter註解及Lombok的使用StructLombok
- Lombok常用註解Lombok
- Lombok 註解詳解Lombok
- Lombok的常用註解有哪些Lombok
- Lombok - 使用註解讓你的JavaBean變得更加簡潔LombokJavaBean
- lombok 註解無效 已解決Lombok
- Lombok中@Builder和@SuperBuilder註解的用法LombokUI
- LOMBOK使用詳解Lombok
- 03-Spring IOC容器的基本使用(註解的使用)Spring
- eclipse環境下lombok中的註解失效 @AllArgsConstructor @Slf4j 註解失效EclipseLombokStruct
- 3註釋的基本使用
- lombok的使用Lombok
- Spring MVC常用註解,你會幾個?SpringMVC
- 使用解構的幾個騷操作
- git的幾個常用基本操作Git
- java lombok包在maven已經配置,但是註解沒用JavaLombokMaven
- JAVA 註解的基本原理Java
- @lombok註解背後的原理是什麼,讓我們走近自定義Java註解處理器LombokJava
- java中有哪些基本註解Java
- SpringBoot使用LomBokSpring BootLombok
- Intellij IDEA 安裝lombok及使用詳解IntelliJIdeaLombok
- Java反射和註解基本用法Java反射
- VSCode中Lombok註釋支援外掛VSCodeLombok
- 註解@PropertySource的使用
- Java註解的使用Java
- @responseBody註解的使用
- @Mapper註解的使用APP
- 使用laravel解決庫存超出的幾個方案Laravel
- 幾個作業系統的基本概念作業系統
- Lombok使用指南Lombok
- @ResponseBody註解和@RequestBody註解使用
- HTML基本結構包含幾個部分?HTML
- Spring的@PropertySource註解使用Spring
- java中的註解使用Java
- Java註解解析-搭建自己的註解處理器(CLASS註解使用篇)Java
- 介紹幾個Python 中寫註釋的方法Python
- Intellij idea 不能識別 @Slf4j,@Getter ,@Setter註解,安裝LombokIntelliJIdeaLombok