学习effective java-4创建和销毁对象之利用私用构造方法强化类的非实例化

时间:2023-02-25 17:54:46

该知识点是自己从书籍中学习的笔记。

   有的时候,我们想写一个包含静态方法和静态成员的类,而该类不允许被实例化。

    如果将类声明为抽象的话,使用该类的时候可以不被实例化,但是该类可以被继承,子类可以实例化该类,而且在很多情况下,用户会认为这是继承关系,而不是非实例化方式。因此这种方法不行。

   在默认情况下,类的构造方法是default的,如果将其声明成private的话,那么该类的构造方法只能够在本类中使用,子类都不能够使用。所以可以使用这种方式来确保类不能够被实例化。例子:

public class NonInstanceTest {

    private NonInstanceTest() {

       throw new AssertionError();

    }

}

 上面在构造方法中抛出异常,是为了防止使用反射的方式来实例化对象。