Lombok lombok.experimental.UtilityClass
為v1.16.2
推出的實驗功能,使用方法如下。
專案中通常會設計一些工具類別來處理常碰到的一些問題,例如字串處理、格式轉換、日期時間轉換、加解密、檔案處理、文字解析等。這些問題通常是單純的計算及資料轉換,因此工具類別為無狀態並只提供公開靜態方法讓客戶端使用,特色包括:
- 不需實例化
- 不能被繼承
- 無狀態
- 只提供靜態方法
而Lombok的@UtilityClass
可套在類別名稱前使成為具有上述特色的工具類。
例如下面的一般類別UtilityClassDemo
套上@UtilityClass
。
UtilityClassDemo
import lombok.experimental.UtilityClass;
@UtilityClass
public class UtilityClassDemo {
private final int CONSTANT = 5;
public int add(int in) {
return in + CONSTANT;
}
}
Lombok會將@UtilityClass
類別的建構式編譯為private
,且所有的成員(屬性及方法)編譯為static
。
UtilityClassDemo
public final class UtilityClassDemo {
private static final int CONSTANT = 5;
private UtilityClassDemo() {
throw new java.lang.UnsupportedOperationException("This is a utility class and cannot be instantiated");
}
public static int add(int in) {
return in + CONSTANT;
}
}
@UtilityClass
目前(v 1.18.12
)仍屬實驗階段,所以package為lombok.experimental
。
沒有留言:
張貼留言