首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Effective Java:Ch2_创设销毁对象:Item4_通过私有构造函数来强化不可实例化的能力

2013-01-26 
Effective Java:Ch2_创建销毁对象:Item4_通过私有构造函数来强化不可实例化的能力偶尔情况下,你会编写只包

Effective Java:Ch2_创建销毁对象:Item4_通过私有构造函数来强化不可实例化的能力

        偶尔情况下,你会编写只包含静态方法和静态域的类。这种类的名声不太好,因为有些人滥用他们来避免面向对象编程,不过这种类确实有他们的用处。

我们可以照java.lang.Math或java.util.Arrays的样子,用这种类将基本类型或数组上相关的方法组织起来;

// Noninstantiable utility classpublic class UtilityClass{    // Suppress default constructor for noninstantiability    private UtilityClass(){        throw new AssertionError();    }}
        由于显式的构造函数是私有的,所以在类的外部不可访问该方法。AssertionError并不是必须的,不过它确保了该方法不会再类内部被意外调用,它确保了在任何情况下该类都不会被实例化。这种习惯用法有点违背直觉,因为明明已提供了构造函数,但却不能被调用。所以,聪明的做法是增加一条注释,如上例所示。

        这种习惯用法的副作用是类不能被子类化了。子类的所有构造函数必须首先隐式或显式地调用父类构造函数,而在这种用法下,子类就没有可访问的父类构造函数可调用了。





热点排行