微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

Peter Lawrey在他的博客上写了关于 Two Uses of Enums that most people forget内容.

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

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

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

解决方法

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

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

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

原文地址:https://www.jb51.cc/java/121956.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐