case类有一些很好的perc,比如copy,hashCode,toString,Pattern Matching.为什么不将每个Scala类都作为案例类?
A case class非常适合保存复杂的值,例如实体对象.它们被认为恰恰适用于这种情况,因此它们通过合成您提到的方法并进一步Serializable创建类并使用"工厂"方法创建伴随对象(除了模式的提取器之外),为您提供精确适用于此用例的方法.匹配).
缺点如下:
某些属性case class可能对您正在创建的类感兴趣:您是否希望equals在持有数据库连接的对象上使用方法?它会有意义Serializable吗?如果确实如此,它会安全吗?
所有这些功能都不是免费的:它们需要编译器做一些额外的工作并添加到你的最终工件大小; 如果您不需要case class提供的额外功能,为什么要这些?
你不能继承case class到另一个case class,这可能与你对你的域建模有关.为什么?简答:平等.你可以在这里找到更长的答案.