推荐的代码风格:case object Foo 还是 object Foo extends Serializable?

3
如果我想要一个序列化安全的单例,我应该选择哪种实现方法?
case object Foo

或者

object Foo extends Serializable

?


1
这是一个风格问题吗?这两个代码示例执行不同的操作! - Kim Stebel
它们不是等价的。 - Raphael
我从未声称它们是等价的,只是两者都将序列化代码添加到字节码中。 - soc
1个回答

2

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

如果您计划将此对象与其他类一起使用,对其进行序列化,并可能在模式匹配中使用它,则将其定义为Case对象似乎更自然。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接