Java 构造器 通过私有构造器强化不可实例化的能力

  只有当类不包含显式的构造器时,编译器才会生成一个公有的、无参的缺省构造器。只要让一个类包含私有构造器,这个类就不能被实例化了。示例:

1 // 工具类
2 public class UtilityClass {
3     // 私有构造器
4     private UtilityClass {
5         throw new AssertionError();
6     }
7     
8     // 其他操作...
9 }

  AssertionError避免在类的内部调用构造器,保证该类在任何情况下都不会被实例化。同时,这个类不能被子类化,因为子类构造器无法显式或隐式地调用该类(父类)的私有构造器。

  参考资料

  《Effective Java 中文版 第2版》 第4条:通过私有构造器强化不可实例化的能力 P16  

原文地址:https://www.cnblogs.com/WJQ2017/p/7631936.html