你好,游客 登录
背景:
阅读新闻

Scala面试题:case class (样本类)是什么?

[日期:2018-09-15] 来源:jianshu  作者:IIGEOywq [字体: ]
  • 样本类是一种不可变且可分解类的语法糖,这个语法糖的意思大概是在构建时,自动实现一些功能。样本类具有以下特性:
    (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,两个不同的引用对象


作者:IIGEOywq
链接:https://www.jianshu.com/p/ace2bb24dc11
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
收藏 推荐 打印 | 阅读: