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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月06日 09时24分55秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【实用】Redis高级功能
2019-04-29
DevOps八荣八耻了解下,哈哈~
2019-04-29
API Gateway(API网关)介绍
2019-04-29
【免费】少儿编程社区,Scratch中文社区,少儿编程学习交流平台上线~~~
2019-04-29
JavaMail关于使用qq企业邮箱发邮件踩过的坑
2019-04-29
log4j2异步发送error日志邮件配置
2019-04-29
redis setnx解决定时任务多节点部署并发问题(分布式锁)
2019-04-29
spring boot使用redis解决session双机问题
2019-04-29
Java Web会话机制,Cookie和Session详解
2019-04-29
基于timestamp和nonce的防止重放攻击方案
2019-04-29
Linux常用基础命令198个
2019-04-29
Linux运维工程师初级面试题
2019-04-29
GA入门
2019-04-29
kettle问题合集
2019-04-29
spark学习笔记
2019-04-29
Tableau学习笔记
2019-04-29
Kettle学习笔记
2019-04-29
airflow问题合集
2019-04-29
sql
2019-04-29