scala的样例类的方法

样例类的方法
当我们定义一个样例类,编译器自动帮助我们实现了以下几个有用的方法:
apply方法
toString方法
equals方法
hashCode方法
copy方法

apply方法
apply方法可以让我们快速地使用类名来创建对象。
参考以下代码:

case class CasePerson(name:String, age:Int)

object CaseClassDemo {
  def main(args: Array[String]): Unit = {
    val lisi = CasePerson("李四", 21)
    println(lisi.toString)
  }
}

toString方法
toString返回样例类名称(成员变量1, 成员变量2, 成员变量3…),我们可以更方面查看样例类的成员

case class CasePerson(name:String, age:Int)

object CaseClassDemo {
  def main(args: Array[String]): Unit = {
    val lisi = CasePerson("李四", 21)
    println(lisi.toString)
    // 输出:CasePerson(李四,21)
  }
}

equals方法
样例类自动实现了equals方法,可以直接使用==比较两个样例类是否相等,即所有的成员变量是否相等
示例
创建一个样例类Person,包含姓名、年龄
创建名字年龄分别为"李四", 21的两个对象
比较它们是否相等
val lisi1 = CasePerson(“李四”, 21)
val lisi2 = CasePerson(“李四”, 21)
println(lisi1 == lisi2)
// 输出:true
在这里插入图片描述
结果:
在这里插入图片描述
hashCode方法
样例类自动实现了hashCode方法,如果所有成员变量的值相同,则hash值相同,只要有一个不一样,则hash值不一样。
示例
创建名字年龄分别为"李四", 21的对象
再创建一个名字年龄分别为"李四", 22的对象
分别打印这两个对象的哈希值
val lisi1 = CasePerson(“李四”, 21)
val lisi2 = CasePerson(“李四”, 22)
println(lisi1.hashCode())
println(lisi2.hashCode())
在这里插入图片描述
结果:
在这里插入图片描述
copy方法
样例类实现了copy方法,可以快速创建一个相同的实例对象,可以使用带名参数指定给成员进行重新赋值
示例
创建名字年龄分别为"李四", 21的对象
通过copy拷贝,名字为"王五"的对象
val lisi1 = CasePerson(“李四”, 21)
val wangwu = lisi1.copy(name=“王五”)
println(wangwu)
在这里插入图片描述
结果:
在这里插入图片描述

发布了139 篇原创文章 · 获赞 333 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/qq_45765882/article/details/104304029
今日推荐