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

有时候我们可能需要编写只包含静态方法和静态域的类,例如某些工具类。

如java.lang.Math 或者 java.util.Arrays

这样的工具类不希望被实例化,因为实例对于它们没有任何意义。

如果不手写提供一个构造器,编译器会为这个类提供一个public的构造器,所以我们可以通过手写提供一个私有化的

构造器,从而来阻止这样的工具类来产生实例。

在这个私有的构造器里面,我们可以抛出一个AssertionException异常,从而进一步阻止它在这个类内被调用。

因为提供了私有化的构造器,而且没有提供其他的构造器,这样的类就不能被子类化了,因为子类总会显示或者隐式的调用父类构造器一次。

因为子类没有可以访问的父类构造器了。

原文地址:https://www.cnblogs.com/wangliyue/p/4432638.html