其他分享
首页 > 其他分享> > Item 4: Enforce noninstantiability with a private constructor.

Item 4: Enforce noninstantiability with a private constructor.

作者:互联网

令构造函数私有化来实现不可变类

通常有一些类不是为产生实例而设计的,这些类被称作不可变类(immutable class)。

首先,不建议使用abstract让类成为抽象类,虽然这达成了目的,但是可能会给人一种这种类是被继承而设计的,同时,它的子类是可以实例化的。

推荐构造函数私有化来防止类被实例化,同时,由于子类必须要调用父类的构造函数,其私有化的构造函数也保证了不会产生子类,这可能也同时是一个副作用。

除此之外,因为显式构造函数是私有的,所以在类之外是不可访问的。建议在构造函数中抛出AssertionError,以防构造函数意外地被调用。它保证类在任何情况下都不会被实例化。

// Noninstantiable utility class
public class UtilityClass {
    // Suppress default constructor for noninstantiability
    private UtilityClass() {
        throw new AssertionError();
    } ... // Remainder omitted
}

标签:子类,私有化,private,class,Item,实例,constructor,Enforce,构造函数
来源: https://www.cnblogs.com/nepkacc/p/14151312.html