第4條:經過私有構造器來強化不可實例化能力

  像有些類裏面可能只包含靜態方法、屬性和靜態域的類時,而在缺乏顯示的構造器的時候,編譯器會提供一個無參的缺省構造器,因爲實例化它們並無任何意義,因此顯然沒有必要,這時候咱們能夠提供一個私有的構造器,這樣就不被實例化了,固然,咱們最後在構造器中拋出異常來進行說明下,或者加條註釋。spa

public class UtilityClass{
       private UtilityClass(){
                 throw new AssertionError("UtilityClass  cant not have instance");
       }
}

  固然,有人企圖經過將類作成抽象類來強制該類不能不實例化,可是咱們不要忽略該類能夠被子類化,而後子類在進行實例化,這就很容易誤導用戶了。所以這種方法的缺點也就是不能被繼承。code

相關文章
相關標籤/搜索