Scala 类与方法的高级特性
1. 用 case 类生成样板代码
1.1 问题描述
在使用匹配表达式、Actor 等场景时,希望利用 case 类语法生成样板代码,包括访问器、修改器方法,以及 apply
、 unapply
、 toString
、 equals
和 hashCode
等方法。
1.2 解决方案
将类定义为 case 类,并在构造函数中定义所需的参数。例如:
// name and relation are 'val' by default
case class Person(name: String, relation: String)
定义为 case 类会生成大量样板代码,具有以下好处:
- 生成 apply
方法,创建类的新实例时无需使用 new
关键字。
- 由于 case 类构造函数参数默认是 val
,会为构造函数参数生成访问器方法;若参数声明为 var
,还会生成修改器方法。
- 生成良好的默认 toString
方法。
- 生成 unapply
方法,便于在匹配表达式中使用 case 类。
- 生成 equals