Scala類型檢查與轉換 isInstanceOf、asInstanceOf

Scala類型檢查與轉換

isInstanceOf:檢查某個對象是否屬於某個給定的類。
asInstanceOf:將引用轉換爲子類的引用。
classOf:如果想測試p指向的是一個Employee對象但又不是其子類,可以用if(p.getClas
s == classOf[Employee])
,classOf方法定義在scala.Predef對象中,因此會被自動引入。如:

[plain] view plain copy
  1. if(p.isInstanceOf[Employee]){   
  2. val s = p.asInstanceOf[Employee]   
  3. }  

與Java相比:

Scala

Java

obj.isInstanceOf[Class]

obj instanceof Class

obj.asInstanceOf[Class]

(Class)obj

classOf[Class]

Class.class


e.g
[plain] view plain copy
  1. object ClassTest {  
  2.   def main(args: Array[String]){  
  3.     val testA: SuperClass = new SuperClass  
  4.     val testB: SuperClass = new SubClass  
  5.     val testC: SubClass = new SubClass  
  6.       
  7.     println(testA.isInstanceOf[SuperClass])  
  8.     println(testB.isInstanceOf[SuperClass])  
  9.     println(testC.isInstanceOf[SubClass])  
  10.       
  11.     println(testA.asInstanceOf[SuperClass])  
  12.     println(testB.asInstanceOf[SuperClass])  
  13.     println(testB.asInstanceOf[SubClass])  
  14.       
  15.     if(testB.getClass() == classOf[SuperClass]){  
  16.         println("true")  
  17.     }  
  18.     else{  
  19.       println("false")  
  20.     }  
  21.   }  
  22. }  
  23.   
  24. class SuperClass{  
  25.     
  26. }  
  27.   
  28. class SubClass extends SuperClass{  
  29.     
  30. }  
運行結果:

[plain] view plain copy
  1. true  
  2. true  
  3. true  
  4. edu.firstday.SuperClass@11b5a415  
  5. edu.firstday.SubClass@2c2767c8  
  6. edu.firstday.SubClass@2c2767c8  
  7. false  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章