lombok標簽之@Data @AllArgsConstructor @@NoArgsConstructor -如何去除get,set方法。@Data注解和如何使用,lombok


 

在代碼中我們可以只加上標簽@Data 而不用get,set方法;

 

val : 和 scala 中 val 同名, 可以在運行時確定類型;

@NonNull : 注解在參數上, 如果該類參數為 null , 就會報出異常,  throw new NullPointException(參數名)

@Cleanup : 注釋在引用變量前, 自動回收資源 默認調用 close() 方法

@Getter/@Setter : 注解在類上, 為類提供讀寫屬性

@Getter(lazy=true) :

@ToString : 注解在類上, 為類提供 toString() 方法

@EqualsAndHashCode : 注解在類上, 為類提供 equals() 和 hashCode() 方法

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor : 注解在類上, 為類提供無參,有指定必須參數, 全參構造函數

 

構造函數
@AllArgsConstructor

會生成一個包含所有變量,同時如果變量使用了NotNull annotation , 會進行是否為空的校驗, 
全部參數的構造函數的自動生成,該注解的作用域也是只有在實體類上,參數的順序與屬性定義的順序一致。

@NoArgsConstructor

無參構造函數

@RequiredArgsConstructor

會生成一個包含常量(final),和標識了@NotNull的變量 的構造方法。

 

 

@Data : 注解在類上, 為類提供讀寫屬性, 此外還提供了 equals()、hashCode()、toString() 方法

@Value :

@Builder : 注解在類上, 為類提供一個內部的 Builder

@SneakThrows :

@Synchronized : 注解在方法上, 為方法提供同步鎖

@Log :

@Log4j : 注解在類上, 為類提供一個屬性名為 log 的 log4j 的日志對象

@Slf4j : 注解在類上, 為類提供一個屬性名為 log 的 log4j 的日志對象



@Cleanup("dispose") org.eclipse.swt.widgets.CoolBar bar = new CoolBar(parent, 0);
@Cleanup InputStream in = new FileInputStream(args[0]);
@Cleanup OutputStream out = new FileOutputStream(args[1]);

 

 

上面一些注解是由包含關系的, 看需要什么方法就增加什么注解,@Log4j 和 @Slf4j 注解作用不小, 用在各層都可以,方便打 log。

也可以查看官網 [ 官網 ] 

 

簡易例子:[ 只是用了@Data注解 ]

復制代碼
public @Data class Student {
     
     private String stuId;
     private String stuName;
     private String stuNum;
     private String stuSex;
 }
復制代碼

雖然說,eclipse 的快捷鍵生成這些代碼會很快,但是知道總比不知道的好,萬一別人用了,你看不懂別人的代碼呢?那就不面子丟大了,還只是個實體類而已。

我覺得最重要的是,代碼行數少了很多,簡潔的代碼誰不喜歡呢?

還有一點, 使用這個 lombok 需要安裝 lombok 插件。

主要的作用提高代碼的簡潔
@Data
去除一些重復的get,set方法,
1.需要官網下載jar包
https://projectlombok.org/download
2運行jar包,添加到eclipse目錄下
點擊install/update按鈕,即可安裝完成
檢查eclipse.ini文件最后是否添加了jar包
3然后重啟一下eclipse,
4最重要的是需要在maven中引入
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
</dependency>
比較一下:
原來的代碼

public class EnergySource {

private String energySourceId;
private String fuel;
private String industrialWater;
private String gas;
private String naturlGas;
private String steam;
private String oxygenNitrogen;
private String compressedAir;
private String dynamicMedium;
public String getEnergySourceId() {
return energySourceId;
}
public String getFuel() {
return fuel;
}
public String getIndustrialWater() {
return industrialWater;
}
public String getGas() {
return gas;
}
public String getNaturlGas() {
return naturlGas;
}
public String getSteam() {
return steam;
}
public String getOxygenNitrogen() {
return oxygenNitrogen;
}
public String getCompressedAir() {
return compressedAir;
}
public String getDynamicMedium() {
return dynamicMedium;
}
public void setEnergySourceId(String energySourceId) {
this.energySourceId = energySourceId;
}
public void setFuel(String fuel) {
this.fuel = fuel;
}
public void setIndustrialWater(String industrialWater) {
this.industrialWater = industrialWater;
}
public void setGas(String gas) {
this.gas = gas;
}
public void setNaturlGas(String naturlGas) {
this.naturlGas = naturlGas;
}
public void setSteam(String steam) {
this.steam = steam;
}
public void setOxygenNitrogen(String oxygenNitrogen) {
this.oxygenNitrogen = oxygenNitrogen;
}
public void setCompressedAir(String compressedAir) {
this.compressedAir = compressedAir;
}
public void setDynamicMedium(String dynamicMedium) {
this.dynamicMedium = dynamicMedium;
}
@Override
public String toString() {
return "EnergySource [energySourceId=" + energySourceId + ", fuel=" + fuel + ", industrialWater="
+ industrialWater + ", gas=" + gas + ", naturlGas=" + naturlGas + ", steam=" + steam
+ ", oxygenNitrogen=" + oxygenNitrogen + ", compressedAir=" + compressedAir + ", dynamicMedium="
+ dynamicMedium + "]";
}

}
加注解的代碼

import lombok.Data;

@Data
public class EnergySource {

private String energySourceId;
private String fuel;
private String industrialWater;
private String gas;
private String naturlGas;
private String steam;
private String oxygenNitrogen;
private String compressedAir;
private String dynamicMedium;

}

還有一些提供的注解:
        @Data   :注解在類上;提供類所有屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法
        @Setter:注解在屬性上;為屬性提供 setting 方法
        @Getter:注解在屬性上;為屬性提供 getting 方法
        @Log4j :注解在類上;為類提供一個 屬性名為log 的 log4j 日志對象
        @NoArgsConstructor:注解在類上;為類提供一個無參的構造方法
        @AllArgsConstructor:注解在類上;為類提供一個全參的構造方法

 

參考:如何去除get,set方法。@Data注解和如何使用,lombok

參考:@Data 注解引出的 lombok 小辣椒


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM