Lombok 是一種 Java Archive (JAR) 文件,可用來消除 Java 代碼的冗長。java
一個標準的 Java bean,一個典型的 Java bean 通常具備幾個屬性,getter 和 setter。一般還會有一個 toString()
方法、一個 equals()
方法和一個 hashCode()
方法。maven
爲了消除代碼行,Lombok 使用註釋來標識類和 Java 代碼塊。全部的 getter、setter 以及其餘三個方法都是在編譯時被暗示幷包括進來的。spa
Lombok 還讓您得以簡化代碼的其餘部分 — 不單單是 Java bean。好比,還能夠減小 try/catch/finally 塊內以及同步方法內的冗餘代碼。.net
方式一:添加lombok的maven依賴插件
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok-maven --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok-maven</artifactId> <version>1.16.18.1</version> </dependency>
方式二:手動添加lombok.jar.code
建立一個簡單的JavaBeanxml
public class Food{ private String name; private int size; private String color; private String style; }
使用@Data註解爲上面的JavaBean添加getter、setter、equals、hashcode、toString等方法。對象
import lombok.Data @Data public class Food{ private String name; private int size; private String color; private String style; }
看編譯後的.classget
在生成 getter/setter 方法時,Lombok 聽從傳統的標準。全部這些方法名都以 get 或 set 開頭而且屬性名都是大寫的。固然,若是屬性是一個 Boolean,狀況例外。在這種狀況下,getter 以 is 開始,而非 get。這是 Java bean 的一種標準實踐。同步
爲了消除 try/catch/finally 塊的冗餘,只需使用 @Cleanup 註釋
public static void main(String[] args) throws IOException { @Cleanup InputStream in = new FileInputStream(args[0]); @Cleanup OutputStream out = new FileOutputStream(args[1]); }
這個代碼塊不只消除了 try/catch/finally 塊,並且還關閉了開放流
Lombok 還能夠減小同步方法所需的代碼的冗餘。很天然,這是用 @Synchronized 方法實現的。
@Synchronized private int foo() { //some magic done here return 1; }
若是用 @Synchronized
註釋的這個方法是靜態的,那麼 Lombok 就會建立一個名爲 $LOCK
的類對象,並會針對該對象同步這個方法。