java – 使用枚举实现实用程序类和单例

前端之家收集整理的这篇文章主要介绍了java – 使用枚举实现实用程序类和单例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Peter Lawrey在他的博客上写了关于 Two Uses of Enums that most people forget内容.

首先,我没有忘记 – 我甚至没有意识到:)

这些方法简洁明了 – 与更传统的实现相同方法方法相比,除了简洁之外还有什么好处,比如使用带有私有构造函数的final类来实现实用程序类?

此外,是否有任何问题(除了令人困惑的程序员不期待它)?

解决方法

我真的不同意该帖子中第一次使用enum.如果您想要一个不可实例化的实用程序类,只需给它一个私有构造函数.就是这么简单,在我看到的那种情况下,枚举没有提供额外的好处.

在实用程序类中使用枚举用于单例是很好的,但我通常会尝试保持枚举被用作内部实现细节的事实.例如,参见Guava的Predicates类,它使用枚举来强制执行某些谓词的单个实例,例如alwaysTrue().但它不会向用户公开枚举.

至于其他好处:是的,还有其他好处,例如内置的可串行化,并且每个类加载器绝对强制执行枚举常量的单个实例,即使在反序列化时也是如此.

猜你在找的Java相关文章