scala 样例类
一.case class 的特征
package com.jason.qianfeng case class Message(sender: String, receiver: String, body: String) object CaseClassTest { def main(args: Array[String]): Unit = { println("==case class 的比较") val mes = Message("jason", "wus", "starbuck") val mes2 = Message("jason", "wus", "starbuck") println(s"mes : ${mes.toString}") println(s"mes2 : ${mes2.toString}") println(s" mes == mes2 ? :${mes == mes2}") println("==case class copy 方法") val mes3 = mes.copy() println(s"mes == mes3 ? : ${mes == mes3}") println(s"==case class 部分copy") val mes4 = mes.copy(sender = "fan") println(s"mes: ${mes.toString}") println(s"mes4: ${mes4.toString}") } }
1.case class 默认实现了apply 方法,所以可以用val mes = Message(“jason”, “wus”, “starbuck”) 方法来创建对象
2.case class 重写了toString方法,
3.case class 主构造函数中的参数默认是 public val修饰的
4.case class 的比较是基于值的,并不是引用地址的比较
5.case class 的copy 可以实现部分copy,例如
val mes4 = mes.copy(sender = “fan”)
mes4 的 sender 被赋值为“fan” ,其他值沿用mes的值