在代碼中我們可以只加上標簽@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:注解在類上;為類提供一個全參的構造方法