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