scala:类型转换
测定某个对象是否属于给定的类,用isInstanceOf方法,如果测试成功,可以用asInstanceOf方法转换。
if(o.isInstanceOf[T]){
val t: T = o.asInstanceOf[T]
//若o为T的子类对象,则此句结束后o还是T的子类对象
}
如果o为null,o.isInstanceOf[T]将返回false,o.asInstanceOf[T]将返回null。
如果要测试o指向的是一个T对象,但不是T对象的子类对象,上面方法无效,可以用:
if(o.getClass == classOf[T]){ }
getClass方法返回的是java.lang.Class对象,classOf方法返回的也是同样的对象(classOf定义在scala.Predef对象中,所以会自动引入)。
此处Class类的==方法定义在AnyRef类中,在Scala API文档中的解释为:
x == that首先判断x是否为空,如果x为空然后判断that是否为空(都为null返回true),如果x不为空那么调用x.equals(that)来判断是否相等。这里之所以会返回true是因为每一个表示Java类的Class类的实例对象只有一个。

浙公网安备 33010602011771号