Scala类型检查与转换

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

  




版权声明:本文为博主原创文章,未经博主允许不得转载。

 

posted on 2015-09-03 11:14  GatsbyNewton  阅读(1160)  评论(0编辑  收藏  举报

导航