page contents

case class (样本类)是什么?

轩辕小不懂 发布于 2021-09-06 14:17
阅读 674
收藏 0
分类:资源下载
1867
Nen
Nen
- 程序员

样本类是一种不可变且可分解类的语法糖,这个语法糖的意思大概是在构建时,自动实现一些功能。样本类具有以下特性:

(1)自动添加与类名一致的构造函数(这个就是前面提到的伴生对象,通过apply方法实现),即构造对象时,不需要new;

(2)样本类中的参数默认添加val关键字,即参数不能修改;

(3)默认实现了toString,equals,hashcode,copy等方法;

(4)样本类可以通过==比较两个对象,并且不在构造方法中定义的属性不会用在比较上。


代码示例

//声明一个样本类

case class MyCaseClass(number: Int, text: String, others: List[Int]){

 println(number)

}

//不需要new关键字,创建一个对象

val dto = MyCaseClass(3, "text", List.empty) //打印结果3

//利用样本类默认实现的copy方法

dto.copy(number = 5) //打印结果5

val dto2 = MyCaseClass(3, "text", List.empty)

pringln(dto == dto2) // 返回true,两个不同的引用对象

class MyClass(number: Int, text: String, others: List[Int]) {}

val c1 = new MyClass(1, "txt", List.empty)

val c2 = new MyClass(1, "txt", List.empty)

println(c1 == c2 )// 返回false,两个不同的引用对象

请先 登录 后评论