第四条:通过私有构造器强化不可实例化的能力
有时候我们可能需要编写只包含静态方法和静态域的类,例如某些工具类。
如java.lang.Math 或者 java.util.Arrays
这样的工具类不希望被实例化,因为实例对于它们没有任何意义。
如果不手写提供一个构造器,编译器会为这个类提供一个public的构造器,所以我们可以通过手写提供一个私有化的
构造器,从而来阻止这样的工具类来产生实例。
在这个私有的构造器里面,我们可以抛出一个AssertionException异常,从而进一步阻止它在这个类内被调用。
因为提供了私有化的构造器,而且没有提供其他的构造器,这样的类就不能被子类化了,因为子类总会显示或者隐式的调用父类构造器一次。
因为子类没有可以访问的父类构造器了。
转载于:https://www.cnblogs.com/wangliyue/p/4432638.html
第四条:通过私有构造器强化不可实例化的能力相关推荐
- Effective Java之通过私有构造器强化不可实例化能力(四)
比如很多工具类,成员都是静态的,你写这个类的原因是想拿来直接用,而不需要实例化的 但是在缺少显示构造函数的时候,编译器会给你默认生成一个构造函数,这样这个类就有可能实例化 企图将类做成抽象类来强制该类 ...
- Java性能优化(3):通过私有构造函数强化不可实例化的能力
有时候你可能会编写出只包含静态方法和静态域的类,这样的类有一些很不好的名声,因为有些人在面向对象的语言中滥用这样的类来编写过程化的程序.尽管如此,它们也确实有它们特有的用处,我们可以利用这种类,把操作 ...
- Java九十条经验法则之第三条:用私有构造器或者枚举类型强化Singlen对象
Singlen,顾名思义,为单例,创建单例模式的对象有很多种方式,主要有如下三种方式: 1.调用对象的方法,如下: 2.利用静态工厂的方式获取单例对象,例如: 3.使用枚举类的方式,例如: 这种方式最 ...
- 【Effective Java】第二章:静态工厂、构建器、强化Singleton属性、私有构造器、
文章目录 一. 用静态工厂方法代替构造器 优势: 劣势: 实例代码: 二. 遇到多个构造器参数时要考虑使用构建器 ① 重叠构建器 ② JavaBeans模式 ③ Builder模式 三. 用私有构造器 ...
- 用私有构造器或者枚举类型强化Singleton 属性
Singleton 是仅仅被实例化一次,Singleton通常被代表一个无形状对象 实现Singleton有两种常见的方法.这两种构造器方法都要保持构造器私有,并导出公有的静态成员,以便客户端能够访问 ...
- 用私有构造器或枚举类型强化Singleton属性(3)
2019独角兽企业重金招聘Python工程师标准>>> 1.Singleton 代表那些本质上唯一的系统组件.增加客户端调试难度 2.Singleton 实现方法1: 构造器保持私有 ...
- 【四】多智能体强化学习(MARL)近年研究概览 {Learning cooperation(协作学习)、Agents modeling agents(智能体建模)}
相关文章: [一]最新多智能体强化学习方法[总结] [二]最新多智能体强化学习文章如何查阅{顶会:AAAI. ICML } [三]多智能体强化学习(MARL)近年研究概览 {Analysis of e ...
- mysql数据库中查询第几条到第几条数据_在 mysql 数据库中,从查询结果的第四条记录开始选取5条记录,下面 sql 语句正确的是( )...
[单选题]同一种货物,在同一线路上或平行线路上作相对方向的运送,而与对方运程的全部或一部分发生重迭交错的运输被称为( ). [多选题]水闸一般由()三部分组成 [单选题]在一个常规的统计表内,非必需包 ...
- 假如有Thread1、Thread2、ThreaD3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?...
有两种方法: 第一种方法: 一般情况,我们实现多线程都是Thread或者Runnable(后者比较多),但是,这两种都是没返回值的,所以我们需要使用callable(有返回值的多线程)和future( ...
最新文章
- MiniGUI - UNIX Domain Socket 封装
- 【廖雪峰python入门笔记】for循环
- 第一课--EFM32GG11系列--点亮LED灯
- FMCW雷达书籍分享 FMCW radar design
- vue.directive自定义指令 vue.set使用示例
- 【MyBatis使用】mapper.xml 中特殊符号的 2 种处理方法(CDATA区+替代字符举例)
- ABAP gateway里OData url里的select操作是如何在后端实现的
- 当医学影像遇见深度学习,MIDL 2020 论文征稿
- c++框架有哪些_平顶彩钢活动房特点以及用途有哪些?
- JAVA-java内存分配
- 连续液位测量行业调研报告 - 市场现状分析与发展前景预测
- 云服务售后服务调研,参与问卷送福利!
- Nvidia风扇速度自动调节工具推荐
- 记GMGDC2013大会
- 多行文本垂直居中的三种方法
- 基于Linux centos7 搭建内网服务器,并通过外网访问
- SSD时代,你的固态硬盘选哪款?
- CAD绘图设计中怎样删除CAD图层?怎样清理CAD图层文件?
- 英飞凌硅麦焊接注意事项
- DSP F2803x中CLA模块介绍