对于不需要实例化的类,我们需要添加一个私有的构造器来防止编译器自动添加一个缺省的无参构造器,这样这个类就不能被实例化了。
// Noninstantiable utility class
public class UtilityClass {
// Suppress default constructor for noninstantiability
private UtilityClass() {
throw new AssertionError();
}
... // Remainder omitted
}
不足:私有构造器使得该类不可以被子类化,所有点构造器都必须显示或隐式的调用超类构造器,在这种情况下,子类就没有可访问的超类构造器可以调用了。