一.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的值

 

版权声明:本文为jason-dong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jason-dong/p/9536786.html