scala样例类与普通类区别
发布日期:2021-06-28 21:02:41 浏览次数:2 分类:技术文章

本文共 1585 字,大约阅读时间需要 5 分钟。

普通类,只有在伴生对象中定义apply和unapply方法才能够利用伴生对象的方式创建对象和模式匹配

样例类,当一个类被定义成为case类后,Scala会自动帮你创建一个伴生对象并帮你实现了apply, unapply,setter, getter 和toString,equals,copy和hashCode等方法

/** * 创建订单的样例类 */case class OrderDBEntity(						@BeanProperty orderId:Long,          //订单id                         @BeanProperty orderNo:String,        //订单编号                         @BeanProperty userId:Long)          //用户id
/** * 创建订单的伴生对象 */object OrderDBEntity{
def apply(rowData:CanalRowData): OrderDBEntity = {
//解析rowData对象为Order的样例类对象 OrderDBEntity( rowData.getColumns.get("orderId").toLong, rowData.getColumns.get("orderNo"), rowData.getColumns.get("userId").toLong ) }}

样例类

支持模式匹配,默认实现了serializable接口

定义为 case class 类名(属性:类型,…),类的命名必须是驼峰式的

case class Message(sender: String, content: String)object TestCalseClass {
def main(args: Array[String]): Unit = {
val message = new Message("张不帅","其实你很帅") println(message.sender+"发送了: "+message.content) }}

Scala 中 case class 与 class 的区别(代码示例)

class 类似Java中的class

case class 被称为样例类,是一种也输的类,常被用于模式匹配

具体区别:

1,初始化的时候可以不用new ,也可以加上,但是普通类必须加上new

2,默认实现了equals、hashCode方法

3,默认是可以序列化的,实现了Serializable

4,case class 构造函数参数是public的,我们可以直接按访问

5,case class默认情况下不能修改属性值

7,case class 最重要的功能,支持模式匹配,这也是定义case class的重要原因

样例代码:

case class Iteblog(name:String)object TestScala {
def main(args: Array[String]): Unit = {
val iteblog = new Iteblog("iteblog_hadoop") val iteblog2 = Iteblog("iteblog_hadoop") println(iteblog == iteblog2) println(iteblog.hashCode) println(iteblog2.hashCode) }}

结果

true5788034257880342

转载地址:https://blog.csdn.net/yangshengwei230612/article/details/116424154 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:scala中样例类和apply方法的使用
下一篇:日志解析--Logparsing

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月06日 09时24分55秒