栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Scala case class

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Scala case class

case class

case class:案例类,具有常规类的所有功能,是为函数式编程提供支持的 Scala 特性。

case class 的特性如下:

  • 案例类中所有的主构造器中所有的参数默认使用 val 修饰,作为类的成员属性。
  • 案例类编译时会自动添加伴生对象以及去全参的 apply 方法,用于类的构造。
  • 案例类编译时会自动添加伴生对象以及去全参的 unapply 方法(提取器),用于通过 match 表达式进行模式匹配。
  • 案例类编译时会自动重写 toString 方法,便于对象的打印,格式为 类名(属性1, 属性2, …)。
  • 案例类编译时会自动生成 copy 方法,用于对象的克隆。
  • equals 和 hashCode 方法也被自动生成,可以比较对象并将他们用作映射中的键。
定义 case class:
object Scala_case_class {

    def main(args: Array[String]): Unit = {

        // 无需使用 new 关键字
        var stu1 = Stu("张三", 18)
        // 无需自己写 toString 方法
        println(stu1)

    }

}

case class Stu(name: String, age: Int)
copt 方法:

copy 方法可实现对象的复制,可以在复制时修改属性值。传参的形式有多种样式。

var stu1 = Stu("张三", 18)
println(stu1)

var stu2 = stu1.copy()
println(stu2)   // Stu(张三,18)

var stu3 = stu1.copy("李四")
println(stu3)   // Stu(李四,18)

var stu4 = stu1.copy("李四", 20)
println(stu4)   // Stu(李四,20)

var stu5 = stu1.copy(age = 22)
println(stu5)   // Stu(张三,22)
unapply 方法:

用于模式匹配

参考:模式匹配

 


❤️ END ❤️
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/644210.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号