@UtilityClass
Utility, metility, wetility! 大眾的工具類別。
@UtilityClass
在 lombok v1.16.2 中作為實驗性功能引入。
實驗性
實驗性是因為- 對於它是否常見到足以被視為樣板程式碼,存在一些爭議。
- 由於 javac 的限制,目前非星號靜態匯入無法用於從
@UtilityClass
類別匯入內容;請勿使用靜態匯入,或使用星號匯入。
概觀
工具類別是一個僅作為函數命名空間的類別。它不能被實例化,並且其所有成員都是靜態的。例如,java.lang.Math
和 java.util.Collections
是廣為人知的工具類別。此註解會自動將標註的類別轉換為工具類別。
工具類別無法被實例化。透過使用 @UtilityClass
標註您的類別,lombok 將自動產生一個拋出例外狀況的私有建構子,將您新增的任何顯式建構子標記為錯誤,並將類別標記為 final
。如果類別是內部類別,則該類別也會被標記為 static
。
工具類別的所有成員都會自動標記為 static
。甚至包括欄位和內部類別。
使用 Lombok
import lombok.experimental.UtilityClass;
|
Vanilla Java
public final class UtilityClassExample {
|
支援的配置鍵
-
lombok.utilityClass.flagUsage
= [warning
|error
] (預設值:未設定) - 如果設定,Lombok 將把任何
@UtilityClass
的使用標記為警告或錯誤。
小字細節
目前沒有任何方法可以建立非靜態成員,或定義您自己的建構子。如果您想要實例化工具類別,即使僅作為內部實作細節,也無法使用 @UtilityClass
。
由於 javac 處理靜態匯入的特殊方式,嘗試對 @UtilityClass
的任何成員執行非星號靜態匯入將無法運作。請使用星號靜態匯入:`import static TypeMarkedWithUtilityClass.*;` 或不要靜態匯入任何成員。