第四条:通过私有构造器强化不可实例化的能力

有些时候我们需要编写只包含静态方法和静态域的类,如工具类,我们不希望被实例化,只要让这个类包含私有构造器,它就不能被实例化了

//Noninstantiable utility class
public class UtilityClass{
     //Suppress defalut constructor for noninstantiability
     private UtilityClass(){
            throw new AssertionError();
     }
}

显式的构造器是私有的,所以不可以在该类的外部访问它。

缺点就是这个类不能被子类化,所有的构造器都必须显式或隐式地调用超类(superclass)构造器,这种情况下,子类就没有可访问的超类构造器可调用了。

你可能感兴趣的:(java)