通过私有构造器强化不可实例化的能力 发表于 2018-12-16 通过私有构造器强化不可实例化的能力 概述 一些工具类可能不希望被实例化,因为实例化对它没有任何含义。诸如Java.lang.Math这种类只含有静态方法和静态域。 方法 企图将这些类实现成抽象类是行不通的,因为子类化之后仍然可以被实例化。可能会误导用户,以为这是为继承而设计的。 但不包含显式的构造器又可能导致编译器生产缺省的构造器。 因此,我们可以让让这个类只包含私有构造函数,同时包含AssertionError,避免内部实例化: 12345public class UtilityClass { private UtilityClass() { throw new AssertionError(); }}