![【读书笔记 - Effective Java】04. 通过私有构造器强化不可实例化的能力 【读书笔记 - Effective Java】04. 通过私有构造器强化不可实例化的能力](https://image.shishitao.com:8440/aHR0cHM6Ly9ia3FzaW1nLmlrYWZhbi5jb20vdXBsb2FkL2NoYXRncHQtcy5wbmc%2FIQ%3D%3D.png?!?w=700&webp=1)
工具类(utility class)不希望被实例化,比如只包含静态方法和静态域的类。为了这个目的,需要让这个类包含一个私有构造器。
// 私有构造器示例
public class UtilityClass {
// 为该类不能被实例化、子类化添上注释
private UtilityClass() {
// 避免不小心在类的内部调用构造器
throw new AssertionError();
}
}
其他不可行方法和理由:
1. 将类写成抽象类:可被子类化,甚至误导用户子去继承这个类。
2. 不写构造方法:类不包含显式的构造器时,编译器会生成缺省的构造器。