一些实用程序类(think java.lang.Math
)只声明一个私有构造函数,以防止实例化该类.
有没有什么特别的理由说明为什么这些类没有用0实例枚举实现?在我看来,enums是一种比构造函数上的访问修饰符更直接的控制实例化的方法.它还可以防止类本身创建实例,这些实例既可以防止程序员在脚中射击,也可以向外传递任何实例的保证.
约书亚布洛赫主张使用枚举作为单身人士.0-instance实用程序类不应该具有相同的优点吗?
我的问题: 0实例枚举与私有构造函数的优缺点是什么?(我个人认为使用枚举没有任何缺点,尽管私有构造函数似乎是更普遍的方法.)
(我知道java.lang.Math
早些时候enum
.我在这里说1.5+代码.)
枚举无法实例化这一事实是一个副作用。当你将某个东西声明为枚举时,人们会期望它是一个枚举;它将在 IDE、代码分析工具等中显示为枚举。
遵循最小惊讶的原则,并且考虑到用户不关心你如何在内部实现这一点,我认为最好使用私有构造函数,并Error
从该构造函数中抛出一个,前提是有人尝试用反射实例化它。
归档时间: |
|
查看次数: |
644 次 |
最近记录: |