Scala类型检查与转换

来源:互联网 发布:js函数返回值return 编辑:程序博客网 时间:2024/05/16 02:19

Scala类型检查与转换

isInstanceOf:检查某个对象是否属于某个给定的类。
asInstanceOf:将引用转换为子类的引用。
classOf:如果想测试p指向的是一个Employee对象但又不是其子类,可以用if(p.getClas
s == classOf[Employee])
,classOf方法定义在scala.Predef对象中,因此会被自动引入。如:

if(p.isInstanceOf[Employee]){ val s = p.asInstanceOf[Employee] }

与Java相比:

Scala

Java

obj.isInstanceOf[Class]

obj instanceof Class

obj.asInstanceOf[Class]

(Class)obj

classOf[Class]

Class.class


e.g

object ClassTest {  def main(args: Array[String]){    val testA: SuperClass = new SuperClass    val testB: SuperClass = new SubClass    val testC: SubClass = new SubClass        println(testA.isInstanceOf[SuperClass])    println(testB.isInstanceOf[SuperClass])    println(testC.isInstanceOf[SubClass])        println(testA.asInstanceOf[SuperClass])    println(testB.asInstanceOf[SuperClass])    println(testB.asInstanceOf[SubClass])if(testB.getClass() == classOf[SuperClass]){    println("true")    }    else{      println("false")    }  }}class SuperClass{  }class SubClass extends SuperClass{  }
运行结果:

truetruetrueedu.firstday.SuperClass@11b5a415edu.firstday.SubClass@2c2767c8edu.firstday.SubClass@2c2767c8false



0 1