4.使用私有构造方法来避免实例化

2019-01-23  本文已影响0人  Orange_____

在平常的项目中可能会需要到很多工具类, 但是这些工具类, 它只提供静态方法, 以及静态变量, 并不希望别人去实例化, 这个时候, 可以将构造器设置成私有的, 并在构造器中加入防止实例化对象的代码, 例如抛出异常

public final class NetworkUtils {

    private NetworkUtils() {
        throw new RuntimeException("This class can't create objects, It just an util class");
    }

    // 通过网卡名获取其对应的不是回环的ipv4地址
    public String getNotLoopbackIpv4AddressByNetworkCardName(String networkCardName) {
        // TODO get ip address
        return null;
    }
    
}

使用抽象类来构建工具类避免实例化的想法是不好的, 因为调用者可能会以为该类是可以被继承的
在Java8以后接口可以声明静态方法, 并且接口是不能被实例化的, 看起来接口貌似可以来当做工具类使用, 但他跟抽象类有一个共同的缺点, 那就是会被子类继承
如果一定要使用这两种方法的话, 尽量要在类的注释中说明该类是不可以被继承的, 这样可以尽可能的避免误继承

上一篇 下一篇

猜你喜欢

热点阅读