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{ }
运行结果:
true true true edu.firstday.SuperClass@11b5a415 edu.firstday.SubClass@2c2767c8 edu.firstday.SubClass@2c2767c8 false
版权声明:本文为博主原创文章,未经博主允许不得转载。