首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Effective Java 項目 4:以私有建構子強化不可實例化類別

     編輯:Java 相關知識

背景

工具類別(如 java.lang.Math、java.util.Arrays)通常只包含靜態方法與靜態欄位,並不需要被實例化。然而,若不加限制,這些類別仍可像普通類別一樣被 new 出實例,這既無意義又可能誤導使用者。

解決方案:私有建構子 + 拋出異常

將建構子宣告為 private,即可阻止外部實例化。為了防止類別內部意外調用,建議在建構子中直接拋出 AssertionError。

public class UtilityClass {
    // 私有建構子,內部若嘗試實例化會拋出異常
    private UtilityClass() {
        throw new AssertionError("此類別不可實例化");
    }
}

優缺點分析

  • 優點:徹底杜絕內外部實例化,編譯期或執行期即可發現錯誤,語義明確。
  • 缺點:該類別無法被繼承(子類別無法調用父類別的私有建構子)。

此模式適用於純靜態工具類別,若需允許子類化,則不宜使用此手法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved