scala自学之路-29-样例类

object CaseClassDemo {

def main(args: Array[String]): Unit = {

//定义样例类

//默认带有apply方法

//构造函数的参数默认是public val修饰的

//虽然可以显示的将其改为var修饰的,但是不推荐这种方法

case class Message(sender: String, var recipient: String, body: String)

val message1 = Message("zhangsan", "lisi", "hello")

val message2 = Message("zhangsan", "lisi", "hello")

println(message1.sender)

// message1.sender=""

message1.recipient = "wangwu"

//样例类的比较,基于值或者结构比较,而不是基于引用比较

println(message1 == message2)

//样例类的copy

val message3 = message1.copy()

println("message3:" + message3.sender + "," + message3.recipient + "," + message3.body)

println(message1 == message3)

//不完全拷贝,对部分参数进行赋值

val message4 = message1.copy(sender = "zhaoliu")

println("message4:" + message4.sender + "," + message4.recipient + "," + message4.body)

}

}

  1. 样例类必须显示的生命一个主构造器;
  2. 自动会构造一个空的辅助构造函数
  3. 自动混入序列化的特质
  4. 默认重写toStrinfg方法
  5. 不需要new,就可以构建对象
  6. 后面开发spark程序的时候,封装bean习惯上使用case class来封装

版权声明:本文为u012045045原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。