LomBok教程v0.1
lombok
是一個幫助JAVA開發(fā)者快速的完成機械性運動編碼的重復(fù)性工作的替代品黑忱,他幫助用戶完成了過去需要右鍵或者敲打才能填寫補充的get
,set
,toString
等常用的屬性方法绰疤,構(gòu)造器這種沒有技術(shù)含量的工作!
整理者:sulwan
相關(guān)知識
equals()
的作用是 用來判斷兩個對象是否相等。
==
: 它的作用是判斷兩個對象的地址是不是相等
hashCode()
的作用是獲取哈希碼鲜棠,也稱為散列碼;它實際上是返回一個int整數(shù)望薄。這個哈希碼的作用是確定該對象在哈希表中的索引位置槽驶。
更多了解請看:
https://www.cnblogs.com/skywang12345/p/3324958.html
https://zhuanlan.zhihu.com/p/32779910
安裝LomBok
Lombok
安裝分為項目安裝,以及編輯器安裝兩部分:
①編輯器安裝
? eclipse:
? 下載插件(https://projectlombok.org/download
)蚯瞧,保存于eclipse目錄,并在eclipse.ini
文件最末端添加:
-javaagent:lombok.jar
-Xbootclasspath/a:lombok.jar
重啟eclipse嘿期,即完成安裝。
? idea:
? 可以在線安裝lombok的插件
? settings -> plugins -> 在搜索框輸入lombok -> 安裝
②項目安裝
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
LomBok常用API
①@Setter
注解在類或字段埋合,注解在類時為所有字段生成setter方法备徐,注解在字段上時只為該字段生成setter方法。
@Setter
public class Sulwan{
private Long id;
}
public class Sulwan{
private Long id;
public Sulwan(){
}
public Long setId(Long id){
this.id = id;
}
}
②@Getter
使用方法同上甚颂,區(qū)別在于生成的是getter方法蜜猾。
@Getter
public class Sulwan{
private Long id;
}
public class Sulwan{
private Long id;
public Sulwan(){
}
public Long getId(){
return this.id;
}
}
③@ToString
注解在類,添加toString
方法振诬。
@ToString
public class Sulwan{
private Long id;
}
public class Sulwan{
private Long id;
public String toString(){
.........
}
}
④@EqualsAndHashCode
注解在類蹭睡,生成hashCode和equals方法。
@EqualsAndHashCode
public class Sulwan{
private Long id;
}
public class Sulwan{
private Long id;
public int hashCode() {
.........
}
public boolean equals(Object obj) {
.........
}
}
⑤@NoArgsConstructor
注解在類赶么,生成無參的構(gòu)造方法肩豁。
@NoArgsConstructor
public class Sulwan{
private Long id;
}
public class Sulwan{
private Long id;
public Sulwan(){
}
}
⑥@RequiredArgsConstructor
注解在類,為類中需要特殊處理的字段生成構(gòu)造方法辫呻,比如final和被@NonNull注解的字段清钥。
正如文字介紹那樣,就是專門給這倆個情況生成構(gòu)造函數(shù)的印屁,哥們我沒用過循捺,感覺建議不要用!
⑦@AllArgsConstructor
注解在類雄人,生成包含類中所有字段的構(gòu)造方法从橘。特別要注意,不在生成默認構(gòu)造
@NoArgsConstructor
public class Sulwan{
private Long id;
}
public class Sulwan{
private Long id;
@ConstructorProperties({"id"})
public Sulwan(Long id){
this.id = id
}
}
⑧@Data
注解在類础钠,生成setter/getter恰力、equals、canEqual旗吁、hashCode踩萎、toString方法,如為final屬性很钓,則不會為該屬性生成setter方法香府。
@Data
public class Sulwan{
private Long id;
}
public class Sulwan{
private Long id;
public Sulwan(){
}
public Long getId(){
return this.id;
}
public Long setId(Long id){
this.id = id;
}
public int hashCode() {
.........
}
public boolean equals(Object obj) {
.........
}
public String toString(){
.........
}
}
⑨@Slf4j
注解在類董栽,生成log變量,嚴格意義來說是常量企孩。
private static final Logger log = LoggerFactory.getLogger(sulwanController.class);
?@Log4j
注解在類上锭碳;為類提供一個 屬性名為log 的 log4j
日志對像 和上邊的一樣
@Log4j
public class Sulwan{
private Long id;
}
public class Sulwan{
private Long id;
private static final Logger log = LoggerFactory.getLogger(Sulwan.class)
public Sulwan(){
}
}
?@NonNull
注解在 屬性 上,會自動產(chǎn)生一個關(guān)于此參數(shù)的非空檢查勿璃,如果參數(shù)為空擒抛,則拋出一個空指針異常,也會有一個默認的無參構(gòu)造方法
public class Sulwan{
@NonNull
private Long id;
}
public class Sulwan{
@NonNull
private Long id;
}
?@Cleanup
這個注解用在 變量 前面补疑,可以保證此變量代表的資源會被自動關(guān)閉歧沪,默認是調(diào)用資源的 close() 方法,如果該資源有其它關(guān)閉方法莲组,可使用@Cleanup(“methodName”)
來指定要調(diào)用的方法诊胞,也會生成默認的構(gòu)造方法。
在類中引用其他類的前邊增加這個注解锹杈,就會在使用完畢后finally關(guān)閉這個厢钧,他是附著在try
?@Value
這個注解用在 類 上,會生成含所有參數(shù)的構(gòu)造方法嬉橙,get
方法,此外還提供了equals
寥假、hashCode
市框、toString
方法。
這個個人觀點就是Data注解的別名糕韧,以后知道區(qū)別在使用
?@SneakyThrows
這個注解用在 方法 上枫振,可以將方法中的代碼用 try-catch 語句包裹起來,捕獲異常并在 catch 中用 Lombok.sneakyThrow(e)
把異常拋出萤彩,可以使用 @SneakyThrows(Exception.class)
的形式指定拋出哪種異常粪滤,也會生成默認的構(gòu)造方法。
注解在那個方法雀扶,其實就是給那個方法的方法體增加了一個指定異常try....catch
?@Synchronized
這個注解用在 類方法 或者 實例方法 上杖小,效果和 synchronized 關(guān)鍵字相同,區(qū)別在于鎖對象不同愚墓,對于類方法和實例方法予权,synchronized 關(guān)鍵字的鎖對象分別是類的 class 對象和 this 對象,而 @Synchronized 的鎖對象分別是 私有靜態(tài) final 對象 lock 和 私有 final 對象 lock浪册,當然扫腺,也可以自己指定鎖對象,此外也提供默認的構(gòu)造方法村象。
防止多線程的鎖笆环?攒至??以后使用多了在完成