Scala的case class

38 阅读1分钟

case class的定义

case class 是 Scala 中一种特殊的类,它用于创建不可变的数据容器。

它的语法如下

case class ClassName(parameter1: Type1, parameter2: Type2,...)

基本代码

object caseclass01 {
  case class Student(var id:String,var name:String ) {
//    override def equals(obj:Any):Boolean={
//      val other =obj.asInstanceOf[Student]
//      other.id == id && other.name == name
//    }
//    override def toString:String={
//      s"Student(${id},${name})"
//    }

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

    val stu1=new Student("1","小花")
    val stu2=new Student("1","小花")
    println(stu1)

    println(stu1 == stu2)

    val set1=Set(stu1,stu2)
    //val set1=Set(1,2,3,1,1,1)

    println(set1)
  }

}

case class的特点

1.不可变性

case class 创建的对象是不可变的,一旦创建,其属性值不能被修改。case class 的属性在默认情况下是只读的

2. 实例化可以省略new

case class 可以在定义对象时,省略new

3. case class 会自动重写equals,toString

case class和class的区别代码如下

/**
 *
 * case class(样例类)  v.s.  class(类)
 *    1. case class 可以在定义对象时,省略new
 *    2. case class 的属性在默认情况下是只读的
 *    3. case class 会自动重写equals,toString
 *
 *    当我们只需要使用类表示数据的时候,就可以选择使用case class,它更简单!
 */
object caseclass02 {
  case class Student1(var id:String,var name:String ) {

  }
       class Student2(var id:String,var name:String ) {

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

    //val stu1=new Student1("1","小花") 这里的new是灰色的,可省略不写,即val stu1=Student1("1","小花")
    val stu1=new Student2("1","小花")
    val stu2=new Student2("1","小花")
    println(stu1 == stu2)

    println(stu1)
    println(Student1("1","小花"))

    stu1.name="小花花"
//    val stu2= new Student2("1","小花")
  }

}