使用枚举实现实用程序类和单例
Peter Lawrey在他的博客上写了关于Enum的两种用途,大多数人都忘记了。
首先,我没有忘记 - 我甚至没有意识到:)
这些方法很好,很简洁 - 与实现相同事情的更传统方法相比,除了简洁之外,还有什么好处吗?例如,将类与构造函数一起使用用于实用程序类?final
private
另外,是否有任何问题(除了混淆不期望它的程序员)?
Peter Lawrey在他的博客上写了关于Enum的两种用途,大多数人都忘记了。
首先,我没有忘记 - 我甚至没有意识到:)
这些方法很好,很简洁 - 与实现相同事情的更传统方法相比,除了简洁之外,还有什么好处吗?例如,将类与构造函数一起使用用于实用程序类?final
private
另外,是否有任何问题(除了混淆不期望它的程序员)?
对我来说,用于实际枚举似乎更直观。enums
我不太同意第一次使用那个帖子中的。如果你想要一个无法证实的效用类,只需给它一个私有构造函数。就是这么简单,在我所看到的那种情况下,它没有提供额外的好处。enum
enum
在实用程序类中使用枚举作为单例是很好的,但我通常会尝试将正在使用的枚举保留为内部实现细节的事实。例如,请参阅 Guava 的谓词类,该类使用 a 来强制执行某些 s 的单个实例,如 。不过,它不会向用户公开 。enum
enum
Predicate
alwaysTrue()
enum
至于其他好处:是的,还有其他好处,例如内置的可序列化性,以及绝对强制每个类装入器的常量的单个实例,即使在反序列化时也是如此。enum