學習effective java-4創建和銷燬對象之利用私用構造方法強化類的非實例化

該知識點是自己從書籍中學習的筆記。

   有的時候,我們想寫一個包含靜態方法和靜態成員的類,而該類不允許被實例化。

    如果將類聲明爲抽象的話,使用該類的時候可以不被實例化,但是該類可以被繼承,子類可以實例化該類,而且在很多情況下,用戶會認爲這是繼承關係,而不是非實例化方式。因此這種方法不行。

   在默認情況下,類的構造方法是default的,如果將其聲明成private的話,那麼該類的構造方法只能夠在本類中使用,子類都不能夠使用。所以可以使用這種方式來確保類不能夠被實例化。例子:

public class NonInstanceTest {

    private NonInstanceTest() {

       throw new AssertionError();

    }

}

 上面在構造方法中拋出異常,是爲了防止使用反射的方式來實例化對象。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章