跟我一起学scala之——Scala类型检查与转换 isInstanceOf、asInstanceOf、classOf

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

 

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  

 

你可能感兴趣的:(scala)