scala 基础十四 scala case class 的使用
1.当一个类被声明为case class时,编译器会自动进行如下操作:
.构造器中参数如果没有被声明为var,则默认为val类型;
.自动创建伴生对象,同时在伴生对象中实现apply方法,这样在使用时就不用显式地使用new对象;
.伴生对象中同样可以实现unapply(),从而可以将case class应用于模式匹配;
package smart.iot abstract class Persons(name:String) //构造器中参数如果没有被声明为var,则默认为val类型 case class Student(name:String,age:Int,stuentNo:Int) extends Persons(name) case class Teacher(name:String,age:Int,teacherNo:Int) extends Persons(name) case class Nobody(name:String) extends Persons(name) object CaseClass { def main(args: Array[String]): Unit = { //case class 会自动生成apply方法,从而省去了new var p:Persons=Student("james",20,1) p match{ case p:Student=>println("class is a student") case p:Teacher=>println("class is a teacher") case p:Nobody=>println("class is nobody") } } }
2. Map 中的case class 使用
package smart.iot class mapCase { } object mapCase { def main(args: Array[String]): Unit = { var map=Map(1->2) map.get(1) match { //map 的key是Some类型的 case Some(_)=>println("kes is exists") //如果key不存在会返回None值 case None =>println("kes is None") case _=>println("other") } } }