Effective Java (4) - 通过私有构造器强化不可实例化的能力
2013-12-25 21:45
363 查看
一、背景
对于有些工具类如java.lang.Math、java.util.Arrays等,它们只包含静态方法和静态域字段,对于这样的类实例化没有什么任何意义。但在实际使用中,如果不加任何特殊处理,这样的类还是可以像其他类一样可以被实例化。
二、处理办法
将构造函数设置为private,这样外部类无法实例化该类,同时在这个私有的构造函数中直接抛出异常,从而避免在类的内部实例化。
三、好处和弊端
这样定义之后,类在内部和外部都不能被实例化了,否则会发生编译错误或抛出异常,但副作用是这个类将不能被子类化了。
对于有些工具类如java.lang.Math、java.util.Arrays等,它们只包含静态方法和静态域字段,对于这样的类实例化没有什么任何意义。但在实际使用中,如果不加任何特殊处理,这样的类还是可以像其他类一样可以被实例化。
二、处理办法
将构造函数设置为private,这样外部类无法实例化该类,同时在这个私有的构造函数中直接抛出异常,从而避免在类的内部实例化。
public class UtilityClass { // 私有的构造器,内部实例化会抛出异常 private UtilityClass() { throw new AssertionError(); } }
三、好处和弊端
这样定义之后,类在内部和外部都不能被实例化了,否则会发生编译错误或抛出异常,但副作用是这个类将不能被子类化了。
相关文章推荐
- EffectiveJava(4)通过私有构造器强化不可实例化的能力
- Effective Java之通过私有构造器强化不可实例化能力(四)
- Effective Java第四条:通过私有构造器强化不可实例化的能力
- Effective Java (4) 通过私有构造器强化不可实例化的能力
- Effective Java 2.4—— 通过私有构造器强化不可实例化能力
- effective java(4) 之通过私有构造器强化不可实例化的能力
- Effective java第四条:通过私有构造器强化不可实例化的能力
- Java学习笔记4:通过私有构造器强化不可实例化的能力
- Java学习笔记4:通过私有构造器强化不可实例化的能力
- Effective Java(4)--通过私有化构造器强化不可实例化的能力
- Effective Java学习笔记 4 通过私有构造器增强不可实例化的能力
- Effective Java -- 通过私有构造器强化不可实例化的能力
- [Effective Java Distilled] Item 4 通过私有构造方法来加强化不可实例化的性质
- Java性能优化(3):通过私有构造函数强化不可实例化的能力
- 第四条:通过私有构造器强化不可实例化的能力
- 04、通过私有构造器强化不可实例化的能力
- 通过私有构造器强化不可实例化的能力
- 高效Java04:通过私有构造方法强化不可实例化的能力
- 通过私有构造器强化不可实例化的能力
- Effective Jave——第4条:通过私有构造器强化不可实例化的能力