有时候,会需要编写一些只含有静态域和静态方法的类。
例如工具类(utility class),这些类不需要被实例化,也不需要被继承。
因为实例化对他们并没有什么卵用。
然而,在缺少显式构造器的时候,编译器会自动提供以个公有的无参的缺省构造器。
这样,这个工具类和别的类就没有区别了(可以实例化,可以被类继承)
为了确保类不可以被实例化,我们可以通过让类包含私有构造器,那么它就不能被实例化了
public class UtillA{
//为了防止缺省构造器被编译器添加而让此类有实例化的能力
private UtillA(){
throw new AssertionError();
}
//省略实现
}
注意,这样的写法,使得这个类不可以被实例化且不可以被一个类继承。