zoukankan      html  css  js  c++  java
  • 第4条:通过私有构造器来强化不可实例化能力

      像有些类里面可能只包含静态方法、属性和静态域的类时,而在缺少显示的构造器的时候,编译器会提供一个无参的缺省构造器,由于实例化它们并没有任何意义,所以显然没有必要,这时候我们可以提供一个私有的构造器,这样就不被实例化了,当然,我们最后在构造器中抛出异常来进行说明下,或者加条注释。

    public class UtilityClass{
           private UtilityClass(){
                     throw new AssertionError("UtilityClass  cant not have instance");
           }
    }

      当然,有人企图通过将类做成抽象类来强制该类不能不实例化,但是我们不要忽略该类可以被子类化,然后子类在进行实例化,这就很容易误导用户了。因此这种方法的缺点也就是不能被继承。

    作者:哀&RT
    出处:博客园哀&RT的技术博客--http://www.cnblogs.com/Tony-Anne/
    您的支持是对博主最大的鼓励,感谢您的认真阅读。
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    一生何求
    request请求生命周期
    django-restframework
    并发编程小结
    大白话五种IO模型
    Python程序中的协程操作-greenlet模块
    Python程序中的协程操作-gevent模块
    协程基础
    Python程序中的线程操作(线程池)-concurrent模块
    Python程序中的线程操作-线程队列
  • 原文地址:https://www.cnblogs.com/Tony-Anne/p/6694385.html
Copyright © 2011-2022 走看看