Scala 推荐的代码样式:case对象Foo或对象Foo扩展可序列化?

Scala 推荐的代码样式:case对象Foo或对象Foo扩展可序列化?,scala,serialization,object,singleton,language-design,Scala,Serialization,Object,Singleton,Language Design,如果我想要一个序列化安全的单例,我应该更喜欢吗 case object Foo 或 ?我认为这取决于您计划如何使用此对象。Case对象通常与Case类一起用于表示代数数据类型中的某种初始或终端对象,例如Nil或None。常规对象通常是类的伙伴,用于保存静态方法,如singleton和factory方法 如果您计划将此对象与其他类一起使用,序列化它,或者在模式匹配中使用它,那么将其定义为case对象对我来说似乎更为自然。这是一个怎样的风格问题?这两个代码示例做了不同的事情!这两者是不等价的。我从

如果我想要一个序列化安全的单例,我应该更喜欢吗

case object Foo


我认为这取决于您计划如何使用此对象。Case对象通常与Case类一起用于表示代数数据类型中的某种初始或终端对象,例如
Nil
None
。常规对象通常是类的伙伴,用于保存静态方法,如singleton和factory方法


如果您计划将此对象与其他类一起使用,序列化它,或者在模式匹配中使用它,那么将其定义为case对象对我来说似乎更为自然。

这是一个怎样的风格问题?这两个代码示例做了不同的事情!这两者是不等价的。我从未声称它们是等价的,它们只是在字节码中添加了相同的序列化代码。
object Foo extends Serializable