该知识点是自己从书籍中学习的笔记。
有的时候,我们想写一个包含静态方法和静态成员的类,而该类不允许被实例化。
如果将类声明为抽象的话,使用该类的时候可以不被实例化,但是该类可以被继承,子类可以实例化该类,而且在很多情况下,用户会认为这是继承关系,而不是非实例化方式。因此这种方法不行。
在默认情况下,类的构造方法是default的,如果将其声明成private的话,那么该类的构造方法只能够在本类中使用,子类都不能够使用。所以可以使用这种方式来确保类不能够被实例化。例子:
public class NonInstanceTest {
private NonInstanceTest() {
throw new AssertionError();
}
}
上面在构造方法中抛出异常,是为了防止使用反射的方式来实例化对象。