推荐的代码风格:case object Foo 或 object Foo extends Serialized?
如果我想要一个序列化安全的单例,我应该选择
case object Foo
还是
object Foo extends Serializable
?
If I want a serialization-safe singleton, should I prefer
case object Foo
or
object Foo extends Serializable
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为这取决于您打算如何使用这个对象。 Case 对象通常与 case 类一起使用来表示代数数据类型中的某种初始或终止对象,例如
Nil
或None
。常规对象通常是类的伴侣,用于保存单例和工厂方法等静态方法。如果您计划将此对象与其他类一起使用,对其进行序列化,并且可能在模式匹配中使用它,那么将其定义为案例对象对我来说似乎更自然。
I think this depends on how you plan to use this object. Case objects are generally used with case classes to represent some kind of initial or terminal object in an algebraic data type, eg
Nil
orNone
. Regular objects usually are companions for classes to hold static methods like singleton and factory methods.If you're planning using this object with other classes, serializing it, and maybe using it in pattern matching, defining it as a case object seems more natural to me.