伴生对象
- 当单例对象与某个类共享同一个名称时,它就被称为是这个类的伴生对象
- scala类里面没有静态方法和静态字段,可通过伴生对象实现
- 伴生对象和伴生类可以互相访问彼此的私有成员
- 可通过伴生对象的apply方法,将伴生对象当作工厂使用
case class
- 创建 case class 和它的伴生 object
- 实现了 apply 方法让你不需要通过 new 来创建类实例
- 默认为主构造函数参数列表的所有参数前加 val
- 添加天然的 hashCode、equals 和 toString 方法。
- 生成一个 copy 方法以支持从实例 a 生成另一个实例 b
- 由于编译器实现了 unapply 方法,case class 支持模式匹配
- 编译器对case类混入了Product特质
- 编译器对case类增加了copy方法;
- 伴生对象继承了AbstractFunction
- case类可看作是数据对象,不可变的数据对象。
- 因为case类封装的数据有不变的特点,以及可以进行模式匹配,所以它在actor中经常使用,很适合封装消息在actor之间传递。
网友评论