scala中的case class

30 阅读1分钟

case class的定义

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

语法如下:

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

例如,我们要创建一个学生的case class:

case class Student(name: String, age: Int, grade: String)

case class的特点

(1)不可变性

case class 创建的对象是不可变的,一旦创建,其属性值不能被修改。

[代码示范]

val student = Student("Alice", 18, "Grade 12")

// 以下代码会报错,因为 case class 的属性是不可变的

// student.age = 19

(2)实例化可以省略new

普通的class 在实例化时,必须要写new的。

(3)自动重写方法: toString, equals, hashCode, copy。

package caseclass

object caseclass1 {
  case class Student(var id:String,var name:String) {

  }

  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)
    println(set1)
  }
}

image.png

自动生成方法

package caseclass


/*
* 1.case class(样例类)   v.s. class(类)
* 2.case class可以在定义对象时省略new
* 3.case class会自动重写 equals,toString
*
* */



object caseclass1 {
  case class Student(var id:String,var name:String) {

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

  }

  def main(args: Array[String]): Unit = {
    val stu1= Student("1","小华")
    val stu2=new Student2("1","小华")



    println(stu1)
    println(stu1==stu2)
    println(Student("1","小新"))
    stu1.name="小花花"
    println(stu1)
  }
}

image.png