比如很多工具类,成员都是静态的,你写这个类的原因是想拿来直接用,而不需要实例化的

但是在缺少显示构造函数的时候,编译器会给你默认生成一个构造函数,这样这个类就有可能实例化

企图将类做成抽象类来强制该类不被实例化,这是行不通的(因为子类可以实例化,而且你写这个类不又不是用来继承的)

将构造器设置为private来解决问题:

public class UtilityClass {// Suppress default constructor for noninstantiability//错误是为了防止有人调用构造函数private UtilityClass() {throw new AssertionError();}
}

Effective Java之通过私有构造器强化不可实例化能力(四)相关推荐

  1. Effective Java之用私有构造器或者枚举类型强化Singleton属性(三)

    1.饿汉式加载 类加载时就创建 public class MaYun { private static Mayun instance = new Mayun(); private static get ...

  2. 第四条:通过私有构造器强化不可实例化的能力

    有时候我们可能需要编写只包含静态方法和静态域的类,例如某些工具类. 如java.lang.Math 或者 java.util.Arrays 这样的工具类不希望被实例化,因为实例对于它们没有任何意义. ...

  3. Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25

    Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25 目录 Rule20 接口优于抽象类 Rule21 为后代设计接口 Rule22 接口只用于定义类型 ...

  4. Java性能优化(3):通过私有构造函数强化不可实例化的能力

    有时候你可能会编写出只包含静态方法和静态域的类,这样的类有一些很不好的名声,因为有些人在面向对象的语言中滥用这样的类来编写过程化的程序.尽管如此,它们也确实有它们特有的用处,我们可以利用这种类,把操作 ...

  5. Effective Java之谨慎地使用本地方法(五十四)

    本地方法,是指本地程序设计语言(c,或者c++)来编写的特殊方法. 本地方法在本地语言中可移植性任意的计算任务,并且返回到java程序语言. 为什么说谨慎使用本地方法? 1.如果调用了一个本地方法,那 ...

  6. Effective Java之努力使失败保持原子性(六十四)

    这是我们需要遵守的规则: 1.失败的方法调用应该使对象保持在被调用之前的状态. 2.错误通常是不可恢复的,当方法抛出错误时,不需要保持原子性. 3.作为方法规范的一部分,方法产生的任何异常都应该让对象 ...

  7. 【Effective Java】第二章:静态工厂、构建器、强化Singleton属性、私有构造器、

    文章目录 一. 用静态工厂方法代替构造器 优势: 劣势: 实例代码: 二. 遇到多个构造器参数时要考虑使用构建器 ① 重叠构建器 ② JavaBeans模式 ③ Builder模式 三. 用私有构造器 ...

  8. Effective Java读书笔记三:创建和销毁对象

    第1条:考虑用静态工厂方法代替构造器 对于类而言,为了让客服端获得它的一个实例最常用的的一个方法就是提供一个公有的构造器.还有一种方法,类可以提供一个公有的静态工厂方法(static factory ...

  9. Effective Java 在工作中的应用总结

    简介: <Effective Java>是一本经典的 Java 学习宝典,值得每位 Java 开发者阅读.笔者将书中和平日工作较密切的知识点做了部分总结. 作者 | 宜秋 来源 | 阿里技 ...

最新文章

  1. Silverlight 预定义颜色速查表
  2. codeblocks常用配置
  3. Linux常用命令 积累
  4. tarjan求LCA模板
  5. wxpython 可视化开发pdf_MicroPython for the Internet of Things.pdf
  6. qt android程序联网死机,Qt for Android(九) ——APP 崩溃卡死拉起保活实战
  7. SLAM研究内容框架分析
  8. python异常处理_Python 工匠: 异常处理的三个好习惯
  9. 面向对象 —— 类的分类
  10. python下载数据集出现:Compressed file ended before the end-of-stream marker was reached
  11. 【前台技术】-播放音频
  12. 推送数据分析全新升级,优化方向一目了然
  13. 第八问:hub 集线器是啥,作用
  14. 战队口号霸气押韵8字_当朱广权遇上沙雕网友,押韵狂魔花落谁手?
  15. Python爬虫:网易云音乐评论爬取
  16. 油管YouTube直播点赞订阅提示PR字幕Mogrt动态图形模板
  17. 给 Java 程序猿们推荐一些值得一看的好书
  18. 蚂蚁金服首席数据科学家漆远:AI技术开放,与业界融合共创
  19. 页面局部刷新( ScriptManager 和 UpdatePanel)(转)
  20. c++语言字母转换,c++大小写字母转换的思路有几种?

热门文章

  1. cocos2d-x游戏开发(十四)用shader使图片背景透明
  2. 第32讲:实时处理利器 mitmproxy 的使用
  3. 推荐一款日志切割神器,好用到爆!!
  4. 视频质量评价:挑战与机遇
  5. WebRTC安全体系架构的8个组件
  6. WebRTC视频数据流程分析
  7. 在线催稿:当一位高级视频算法工程师接受采访
  8. LiveVideoStackCon 2020上海 6月见
  9. 剑指offer之36-40题解
  10. 认识 MySQL 和 Redis 的数据一致性问题