是否适合定义一个非平凡的Scala案例类?

时间:2011-01-08 19:45:03

标签: scala

我今天正在定义一个Scala类,我认为“我需要equals方法和hashCode方法;而且copy方法也很方便。我会把它变成一个案例类。“我的班级已经有了许多其他代码,并不是一件容易的事。

很好,一切正常,但是当教科书处理案例类时,所有示例都将它们定义为用作值类或“数据传输对象”。定义一个非平凡的案例类是否合适?上面描述的思维过程是否正常,或者我是否需要以不同的方式考虑案例类?

2 个答案:

答案 0 :(得分:10)

case class根据主要构造函数参数提供,equalshashCodetoString方法,所有这些方法也都转换为val。此外,对象随播广告再次根据主要构造函数参数获取applyunapply方法。

此外,case class继承自SerializableProduct,不应由其他类扩展。

如果所有这些事情都适合你的班级,那么请随意将其声明为“案例类”。

答案 1 :(得分:6)

如果它没有后代,请随意。扩展案例类是一个坏主意。