像有些类里面可能只包含静态方法、属性和静态域的类时,而在缺乏显示的构造器的时候,编译器会提供一个无参的缺省构造器,因为实例化它们并无任何意义,因此显然没有必要,这时候咱们能够提供一个私有的构造器,这样就不被实例化了,固然,咱们最后在构造器中抛出异常来进行说明下,或者加条注释。spa
public class UtilityClass{ private UtilityClass(){ throw new AssertionError("UtilityClass cant not have instance"); } }
固然,有人企图经过将类作成抽象类来强制该类不能不实例化,可是咱们不要忽略该类能够被子类化,而后子类在进行实例化,这就很容易误导用户了。所以这种方法的缺点也就是不能被继承。code