概述
有种类是不该被初始化的,这种类是有意义的,比如java.util.Math,java.util.Arrays,java.util.Collections。
使用范例
- 想用抽象类使一个类不能被实例化的想法首先是无效的,因为其子类可以实例化;其次这会给开发者以误导,使开发者以为这个类就是希望被继承的;
- throw new AssertionError();这句不是严格要求的,不过它能保证类不会从内部被实例化;
- 一旦提供了私有Constructor,该类将不能被继承,因为子类的Constructor没有可访问的父类的构造函数,而这又是必须的;
package effective.java.item04;
import java.util.Collections;
// Noninstantiabiliy utility class
public class UtilityClass {
// Suppress default constructor for noninstantiability
private UtilityClass() {
throw new AssertionError();
}
}