28.相比于普通的类,case class的好处

17 阅读1分钟

case :特别适合用来描述数据。

  • case class
  • 样例类,相比与普通得类,它有三点不同
  • 1.在创建对象时。可以省略new
  • 2.默认情况下,属性都是只读的
  • 3.自己自动添加相关的equals,toString 等 方法。

将以下代码进行比较就可以看出 case class的好处

//set是可以去重的
//创建一些对象,把他们装入Set,看看是否能去重!
  class Stu(var name:String, var age:Int) {
    override def equals(obj: Any): Boolean = {
      val other = obj.asInstanceOf[Stu]
      other.age == age && other.name == name
  }

  override def toString: String = s"Stu(${name},${age})"
}
  def main(args: Array[String]): Unit = {
    val stu1 = new Stu("小花",18)
    val stu2 = new Stu("小花",18)

    println(stu1 == stu2)

    val set1 = Set(stu1,stu2)
    println(set1)
  }                 结果:true
 }                        Set(Stu(小花,18))

  case class Stu(var name:String, var age:Int)

  def main(args: Array[String]): Unit = {
    val stu1 = new Stu("小花",18)
    val stu2 = new Stu("小花",18)
    println(stu1)
    println(stu1 == stu2)

    val set1 = Set(stu1,stu2)
    println(set1)
  }
}                   结果:Stu(小花,18)
                          true
                          Set(Stu(小花,18))