提示四

2022-04-06  本文已影响0人  飞絮搅青冥

今天看第四条:使用私有构造器强化不可实例化的能力。

这一节中,作者讲了那些只有静态方法和静态域的类。这样的类一般是一些工具类,我平时也经常会用到,但是作者接下来的说的东西我却从来都没有考虑过。作者为了把这些类做成不可实例化的,特意写了私有的构造器,但是这样同时会导致这些类无法被继承。

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

这种用法有点反直觉,通过给出一个私有的构造器,避免编译器默认提供的公共无参的构造器。不过这样做的意义到底有多大呢?为了API上少一个没有意义的方法?这一点或许还需要我进一步的思考。

上一篇 下一篇

猜你喜欢

热点阅读