使用 lombok 簡化 Java 代碼

lombok 是一個第三方工具,提供了一些注解功能,可以幫助我們消除冗余、臃腫的 Java 代碼,比如 POJO 的 getter/setter 方法、構(gòu)造方法、hashcode 方法等。lombok 在編譯時根據(jù)注解生成具體的代碼,在虛擬機(jī)中運(yùn)行時與直接定義的屬性和方法并沒有什么不同。使用 lombok 可以大大減少 Java 代碼行數(shù),提高開發(fā)效率。

安裝

需要在 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:注解在類上,提供構(gòu)造方法,參數(shù)為所有屬性;
@NoArgsConstructor:注解在類上,提供無參構(gòu)造方法;
@Data:注解在類上,提供所有屬性的 getter 方法、setter 方法以及 equals、hashCode、toString 等方法;
@Log:注解在類上,提供一個名為 log 的屬性,類型為 java.util.logging.Logger,也可使用 @Log4j、@Log4j2、@Slf4j 等其他注解;
@ToString:注解在類上,提供 toString 方法;
@EqualsAndHashCode:注解在類上,提供 equals、hashCode 方法;
@Synchronized:注解在方法上,提供 synchronized,可以指定鎖的名稱;
@NonNull:注解在方法參數(shù)上,提供對參數(shù)的校驗,防止空指針異常;
@Cleanup:注解在局部變量上,提供對資源的關(guān)閉,即調(diào)用 close 方法;

使用示例

在下面的示例中,我們使用注解生成了無參構(gòu)造器、有參構(gòu)造器、 getter/setter 方法、hashcode 方法、equals 方法、toString 方法,生成了一個 slf4j 的日志工具 log,在 test 方法中生成了對于參數(shù) 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();//無參構(gòu)造器
        test.setAge(17);//@Data 提供set方法
        test.setName("Lucy");//@Setter 提供set方法
        System.out.println(test.getName());//get方法

        //有參構(gòu)造器,參數(shù)按屬性定義順序傳入
        LombokTest lombokTest = new LombokTest("hanmeimei",15);
        //lombok 提供了空指針檢測,會拋出異常
        lombokTest.test(null);
    }
}

分享學(xué)習(xí)筆記和技術(shù)總結(jié),內(nèi)容涉及 Java 進(jìn)階、架構(gòu)設(shè)計、前沿技術(shù)、算法與數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫、中間件等多個領(lǐng)域。關(guān)注作者第一時間獲取最新內(nèi)容,公眾號同名(閱讀體驗更佳)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容