該知識點是自己從書籍中學習的筆記。
有的時候,我們想寫一個包含靜態方法和靜態成員的類,而該類不允許被實例化。
如果將類聲明爲抽象的話,使用該類的時候可以不被實例化,但是該類可以被繼承,子類可以實例化該類,而且在很多情況下,用戶會認爲這是繼承關係,而不是非實例化方式。因此這種方法不行。
在默認情況下,類的構造方法是default的,如果將其聲明成private的話,那麼該類的構造方法只能夠在本類中使用,子類都不能夠使用。所以可以使用這種方式來確保類不能夠被實例化。例子:
public class NonInstanceTest {
private NonInstanceTest() {
throw new AssertionError();
}
}
上面在構造方法中拋出異常,是爲了防止使用反射的方式來實例化對象。