case class
case class:案例类,具有常规类的所有功能,是为函数式编程提供支持的 Scala 特性。
case class 的特性如下:
- 案例类中所有的主构造器中所有的参数默认使用 val 修饰,作为类的成员属性。
- 案例类编译时会自动添加伴生对象以及去全参的 apply 方法,用于类的构造。
- 案例类编译时会自动添加伴生对象以及去全参的 unapply 方法(提取器),用于通过 match 表达式进行模式匹配。
- 案例类编译时会自动重写 toString 方法,便于对象的打印,格式为 类名(属性1, 属性2, …)。
- 案例类编译时会自动生成 copy 方法,用于对象的克隆。
- equals 和 hashCode 方法也被自动生成,可以比较对象并将他们用作映射中的键。
定义 case class:
object Scala_case_class {
def main(args: Array[String]): Unit = {
// 无需使用 new 关键字
var stu1 = Stu("张三", 18)
// 无需自己写 toString 方法
println(stu1)
}
}
case class Stu(name: String, age: Int)
copt 方法:
copy 方法可实现对象的复制,可以在复制时修改属性值。传参的形式有多种样式。
var stu1 = Stu("张三", 18)
println(stu1)
var stu2 = stu1.copy()
println(stu2) // Stu(张三,18)
var stu3 = stu1.copy("李四")
println(stu3) // Stu(李四,18)
var stu4 = stu1.copy("李四", 20)
println(stu4) // Stu(李四,20)
var stu5 = stu1.copy(age = 22)
println(stu5) // Stu(张三,22)
unapply 方法:
用于模式匹配
参考:模式匹配
❤️ END ❤️