你可能需要编写只包含静态方法和静态域的类。
这样的工具类不希望被实例化,实例化对他没有任何意义。
(企图通过将类做成抽象类来强制该类不可被实例化,这是行不通的)
工具类(util)就是一类不该被实例化类的代表。它们只是提供一些实用功能,实例化之是毫无意义的。
demo:
- // Noninstantiable utility class
- public class UtilityClass {
- // Suppress default constructor for noninstantiability
- private UtilityClass() {
- throw new AssertionError();
- }
- }
这种惯用法的副作用:它使得一个类不能被子类化。所有的构造器都必须显示或隐式的调用超类构造器。在这种情形下子类就没有可访问的超类构造器可调用了。