学习资源路径:https://github.com/sjsdfg/effective-java-3rd-chinese/blob/master/docs/notes
很多情况下,我们需要设计工具类,但是总是常常在这个工具类被使用的时候,被实例化。那么为了避免该工具类实例化,我们可以通过私有化构造器的方式,实现我们预期的效果。
code:
// Noninstantiable utility class
public class UtilityClass {
// Suppress default constructor for noninstantiability
private UtilityClass() {
throw new AssertionError();
}
... // Remainder omitted
}
AssertionError
异常不是严格要求的,但是它可以避免不小心在类的内部调用构造器。它保证类在任何情况下都不会被实例化。这个习惯用法有点违反直觉,好像构造器就是设计成不能调用的一样。因此,如前面所示,添加注释是种明智的做法。