1. 程式人生 > >使用 Lombok 優雅編碼

使用 Lombok 優雅編碼

一、安裝

    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。

@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");
    }

}