一、介紹和使用 Lombok 是一個 java 庫,能以簡單的註解形式來簡化 java 代碼,提高開發人員的開發效率。 常見使用在開發過程中需要寫的 javabean,往往開發需要花時間去添加相應的 getter/setter,也許還要去寫構造器、equals等方法,而且需要維護,當屬性多時會出現大 ...
一、介紹和使用
Lombok 是一個 java 庫,能以簡單的註解形式來簡化 java 代碼,提高開發人員的開發效率。
常見使用在開發過程中需要寫的 javabean,往往開發需要花時間去添加相應的 getter/setter,也許還要去寫構造器、equals等方法,而且需要維護,當屬性多時會出現大量的 getter/setter 方法,這些顯得很冗長也沒有太多技術含量,一旦修改屬性,就容易出現忘記修改對應方法的失誤,而這些都可以通過 Lombok 的註解去完成,而且!Lombok 的功能還不僅僅是這些。
1、pom.xml
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.2</version> <scope>provided</scope> </dependency>
2、插件安裝
推薦安裝 IDEA lombok plugin 插件,非必須,但是開發過程中看著一堆紅色報錯,還是略不爽呀~
二、註解說明
這裡羅列一些常用的 Lombok 註解:
@Getter:自動生成所有屬性的 getter 方法。
@Setter:自動生成所有屬性的 setter 方法。
@ToString:自動生成 toString() 方法。
@EqualsAndHashCode:生成 equal() 和 hashCode() 方法。
@NoArgsConstructor:生成一個無參構造器。
@AllArgsConstructor:生成一個全參構造器。
@NonNull:為欄位參數生成非空檢查,避免 NullPointerException;
@RequiredArgsConstructor:為所有必填欄位生成一個構造器。
@Cleanup:用在局部變數上,作為資源使用完成後的釋放。比如 FileInputStream 這類的文件流,會在使用完成後調用 close() 方法。
@SneakyThrows:用在方法或者構造器上,拋出需要 throw 的異常。比如 @SneakyThrows(UnsupportedEncodingException.class)。
@Synchronized:用在方法上。相當於對方法使用了 synchronized 關鍵字。
@Data:神器,相當於同時使用了 @Getter、@Setter、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode。
完整的註解文檔說明:https://projectlombok.org/features/all
@Data @NoArgsConstructor @AllArgsConstructor public class UserVO { private Long id; @NonNull private String name; @NonNull private String password; public void copyFile(String in, String out) throws IOException { @Cleanup FileInputStream inStream = new FileInputStream(in); @Cleanup FileOutputStream outStream = new FileOutputStream(out); byte[] b = new byte[65536]; while (true) { int r = inStream.read(b); if (r == -1) break; outStream.write(b, 0, r); } } @SneakyThrows(UnsupportedEncodingException.class) public String utf8ToString(byte[] bytes) { return new String(bytes, "UTF-8"); } }