工具類別(如 java.lang.Math、java.util.Arrays)通常只包含靜態方法與靜態欄位,並不需要被實例化。然而,若不加限制,這些類別仍可像普通類別一樣被 new 出實例,這既無意義又可能誤導使用者。
將建構子宣告為 private,即可阻止外部實例化。為了防止類別內部意外調用,建議在建構子中直接拋出 AssertionError。
public class UtilityClass {
// 私有建構子,內部若嘗試實例化會拋出異常
private UtilityClass() {
throw new AssertionError("此類別不可實例化");
}
}
此模式適用於純靜態工具類別,若需允許子類化,則不宜使用此手法。