美文网首页
第04条 通过私有构造方法强化不可实例化的能力

第04条 通过私有构造方法强化不可实例化的能力

作者: 沅兮 | 来源:发表于2019-04-03 15:30 被阅读0次

    为什么需要通过私有构造方法强化不可实例化的能力

    1、有些类是不需要实例化,如一些工具类:java.lang.Math和java.util.Arrays等。

    2、当我们没有在类中定义一个显式的构造方法时,编译器会自动提供一个公共的、无参的缺省构造方法。

    3、但是有的工具类对用户来说,不管什么样的构造方法都是一样的,不需要就是不需要,因此我们要让用户不可以去创建这个类的对象。

    私有构造的缺点

    • 缺点1:该类不能被子类继承。
    • 缺点2:这么写法让调用者费解,需要添加注释。
    // 防止被实例化
    public class Person{
        /**
         * 添加注释:
         * Suppress default constructor for noninstantiability
         */
        private Person(){
            // 断言错异常,因为不能被访问,所以此段代码非必须,但是可以防止类的内部实例化
            // 告诉用户不可以实例化此类
            throw new AssertionError();
        }
    }
    

    相关文章

      网友评论

          本文标题:第04条 通过私有构造方法强化不可实例化的能力

          本文链接:https://www.haomeiwen.com/subject/mmdzbqtx.html