简单的来说,Scala的case class就是在普通的类定义前加case这个关键字,然后你可以对这些类来模式匹配。
case class带来的最大的好处是它们支持模式识别。
首先,回顾一下前面的模式匹配:
var str = "Tom"
str match{
case "Tom" =>println("hello Tom")
case "Mary" =>println("hello Mary")
case _ =>println("others")
}
其次,如果我们想判断一个对象是否是某个类的对象,跟Java一样可以使用isInstanceOf ,使用case class 可以比较简单实现
/**
* 样本类,实现模式匹配
*/
class Vehicle
case class Car(name:String) extends Vehicle
case class Bike(name:String) extends Vehicle
object CaseClass {
def main(args: Array[String]): Unit = {
var aCar : Vehicle = new Car("Tom's car")
var bBike :Vehicle = new Bike("Andy' bike")
aCar match{
case Car(name) =>println("car:"+ name)
case Bike(name) => println("bike:"+name)
case _ => println("其他")
}
bBike match{
case Car(name) =>println("car:"+ name)
case Bike(name) => println("bike:"+name)
case _ => println("其他")
}
}
}
运行结果:
car:Tom's car
bike:Andy' bike