标签:
本文原文出处: http://blog.csdn.net/bluishglc/article/details/50914001 严禁任何形式的转载,否则将委托CSDN官方维护权益!
Case Class的特别之处在于:
编译器会为伴生对象自动生成以下方法
case class的类参数在不指定val/var修饰时,会自动编译为val,即对外只读,如果需要case class的字段外部可写,可以显式地指定var关键字!
归纳起来,编译器会为Case Class自动生成的方法如下(注意Location是Class还是Object):
以上就是Case Class的全部特征,简单地总结起来就是:让编译器帮忙自动生成常用方法!反过来,如果你手动实现了对应的方法和伴生对象,那么就等同于生成了Case Class. 而实际使用过程中,手动实现这些方法是很繁琐和无趣的,使用Case Class就是最好的选择。当你希望设计一个类只是用来作为数据载体时,
Case Class是一个很好的选择,实际上,这正是DTO(或者也有叫作VO)做的事情,所以说Case Class的一个典型应用场景就是DTO。
另外,通常不会让一个普通类继承Case Class,这会导致一些问题,比如:equals/hashCode/toString方法都会失效。
标签:
原文地址:http://blog.csdn.net/bluishglc/article/details/50914001