请解释 Scala 中的 case class,并对比它和普通 class 的区别,指出其典型使用场景。
考察说明
考查对 Scala 语言中 case class 概念及其与普通类差异的理解。
回答思路
- 【回答框架 1】case class 是 Scala 中一种特殊的类,默认不可变,自动生成 equals、hashCode、toString、copy 方法,并支持模式匹配。
- 【回答框架 2】与普通类的区别:case class 无需 new 即可创建实例,构造参数默认是 val,自动实现结构相等比较,而普通类默认引用相等。
- 【回答框架 3】case class 常用于建模不可变数据,配合模式匹配实现函数式编程风格。
- 【回答框架 4】注意 case class 的实例可以序列化,但不应滥用,比如内部包含大量可变状态时不适合作 case class。
- 【关键点 1】case class 默认不可变,参数为 val。
- 【关键点 2】自动生成 equals、hashCode、toString、copy。
- 【关键点 3】支持模式匹配和结构相等比较。
- 【关键点 4】无需 new 关键字直接创建。
- 【易错点 1】误以为 case class 是普通类,忽略其不可变性。
- 【易错点 2】在需要可变对象时使用 case class,导致设计不良。
- 【易错点 3】混淆结构相等和引用相等。