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