推荐的代码样式:case对象Foo或对象Foo扩展Serializable?

时间:2011-05-25 13:57:45

标签: scala serialization object singleton language-design

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

case object Foo

object Foo extends Serializable

1 个答案:

答案 0 :(得分:2)

我认为这取决于您打算如何使用此对象。 Case对象通常与case类一起使用,以表示代数数据类型中的某种初始或终端对象,例如NilNone。常规对象通常是类的伴随,用于保存静态方法,如单例和工厂方法。

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