lombok 是一個第三方工具,提供了一些注解功能,可以幫助我們消除冗余、臃腫的 Java 代碼,比如 POJO 的 getter/setter 方法、構造方法、hashcode 方法等。lombok 在編譯時根據注解生成具體的代碼,在虛擬機中運行時與直接定義的屬性和方法并沒有什么不同。使用 lombok 可以大大減少 Java 代碼行數,提高開發效率。
安裝
需要在 IDE 中安裝 lombok 插件,才能在 IDE 中正常使用 lombok 生成的方法。以 Idea 為例,在 Settings -> Plugins 中搜索 lombok,即可安裝插件,然后重啟 Idea 使插件生效。
在項目的 pom.xml 文件中,需要引入 lombok 插件和 maven 依賴。
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.16.8.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>delombok</goal>
</goals>
</execution>
</executions>
</plugin>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.14.4</version>
</dependency>
常用注解
lombok 提供了很多注解,常用的如下。
@Getter:注解在屬性上,提供 getter 方法;
@Setter:注解在屬性上,提供 setter 方法;
@AllArgsConstructor:注解在類上,提供構造方法,參數為所有屬性;
@NoArgsConstructor:注解在類上,提供無參構造方法;
@Data:注解在類上,提供所有屬性的 getter 方法、setter 方法以及 equals、hashCode、toString 等方法;
@Log:注解在類上,提供一個名為 log 的屬性,類型為 java.util.logging.Logger,也可使用 @Log4j、@Log4j2、@Slf4j 等其他注解;
@ToString:注解在類上,提供 toString 方法;
@EqualsAndHashCode:注解在類上,提供 equals、hashCode 方法;
@Synchronized:注解在方法上,提供 synchronized,可以指定鎖的名稱;
@NonNull:注解在方法參數上,提供對參數的校驗,防止空指針異常;
@Cleanup:注解在局部變量上,提供對資源的關閉,即調用 close 方法;
使用示例
在下面的示例中,我們使用注解生成了無參構造器、有參構造器、 getter/setter 方法、hashcode 方法、equals 方法、toString 方法,生成了一個 slf4j 的日志工具 log,在 test 方法中生成了對于參數 msg 的空指針校驗。有了 lombok,Java 代碼變得非常簡潔。
@Data
@Slf4j
@AllArgsConstructor
@NoArgsConstructor
public class LombokTest {
@Getter
@Setter
private String name;
private int age;
public void test(@NonNull String msg){
log.info(msg);//lombok 提供了 slf4J 日志工具
}
public static void main(String[] args){
LombokTest test = new LombokTest();//無參構造器
test.setAge(17);//@Data 提供set方法
test.setName("Lucy");//@Setter 提供set方法
System.out.println(test.getName());//get方法
//有參構造器,參數按屬性定義順序傳入
LombokTest lombokTest = new LombokTest("hanmeimei",15);
//lombok 提供了空指針檢測,會拋出異常
lombokTest.test(null);
}
}
分享學習筆記和技術總結,內容涉及 Java 進階、架構設計、前沿技術、算法與數據結構、數據庫、中間件等多個領域。關注作者第一時間獲取最新內容,公眾號同名(閱讀體驗更佳)。