scala中case class与一般的class的区别

Posted Leo Han

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scala中case class与一般的class的区别相关的知识,希望对你有一定的参考价值。

(1)case class初始化的时候可以不用new,也可以加上,但是class必须加new

(2)默认实现了equals、hashCode方法

(3)默认是可以序列化的,实现了Serializalbe

(4)自动从scala.Product中继承一些函数

(5)case class构造函数参数是public的,可以直接访问

(6)case class默认情况下不能修改属性值

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

case class和case object的区别
类中有参和无参,当类有参数的时候,用case class,当类没有参数的时候用case object

当一个类被声明为case class的时候,Scala会自动做下面几件事情
(1)构造器中的参数如果不被声明为var的话,它默认是val类型的,但一般不推荐在构造器中的参数声明为var

(2)自动创建伴生对象,同时在里面实现子apply方法,使得在使用的时候可以不直接显示地new对象

(3)伴生对象中同样会实现unapply方法,从而可以将case class应用于模式匹配

(4)实现自己的toString、hashCode、copy、equals方法

以上是关于scala中case class与一般的class的区别的主要内容,如果未能解决你的问题,请参考以下文章

Scala 的 Case Classes 和 Pattern Matching

Scala class和case class的区别

scala伴生对象与case class用法

scala伴生对象与case class用法

Scala入门到精通——第十五节 Case Class与模式匹配

Scala class和case class的区别