scala自学之路-29-样例类

本文详细介绍了Scala中的案例类(case class)特性,包括默认的apply方法、构造函数参数、序列化特质、toString方法的重写以及如何创建和比较案例类对象。通过实例展示了案例类的copy方法,用于对象的浅复制和深复制,并探讨了在Spark编程中使用案例类作为数据封装的优势。
摘要由CSDN通过智能技术生成

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来封装
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值