背景
lombok庫提供了一些註解來簡化java代碼
官網:http://projectlombok.org/
查看lombok所有api:https://projectlombok.org/api/overview-summary.html
幾個常用的 lombok 註解:
@val : 和 scala 中 val 同名, 可以在運行時確定類型;
@NonNull : 註解在參數上, 如果該類參數爲 null , 就會報出異常, throw new NullPointException(參數名)
@Cleanup : 註釋在引用變量前, 自動回收資源 默認調用 close() 方法
@Getter/@Setter : 註解在類上, 爲類提供讀寫屬性
@Getter(lazy=true) :
@ToString : 註解在類上, 爲類提供 toString() 方法
@EqualsAndHashCode : 註解在類上, 爲類提供 equals() 和 hashCode() 方法
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor : 註解在類上, 爲類提供無參,有指定必須參數, 全參構造函數
@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]);
實現原理:
Lombok不是通過字節碼改寫來實現的。
它主要是用編譯器內支持的annotation processing,直接操縱抽象語法樹(AST),根據需要添加新節點。
代碼中使用(舉兩個例子,更多的可以看官網api)
@Slf4j使用
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class LogExample {
}
生成後的數據
public class LogExample {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
}
@Getter使用
private @Getter int foo;
上將編譯成
public int getFoo() {
return this.foo;
}
使用方法
1.在pom.xml引包
<!-- 增加lombok依賴,可以使用註解@Data 編譯時自動生成get,set方法,構造函數,toString方法 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>compile</scope>
</dependency>
2.在包目錄的地址欄輸入:cmd
3.在dos命令行輸入:java -jar lombok-1.16.20.jar
4.在彈出框選擇需要安裝的IDE,點擊install/update按鈕,即可安裝完成
5.安裝完成之後,確認eclipse安裝路徑下是否多了一個lombok.jar包
6.配置文件eclipse.ini中是否 添加了如下內容:
-javaagent:lombok.jar
-Xbootclasspath/a:lombok.jar
如果都有,就成功
7.安裝成功,使用不了的原因:沒有重啓IDE,沒有clean項目,lombok版本太低等等