scala中asInstanceOf []和isInstanceOf []之间的区别

时间:2013-07-11 08:13:33

标签: scala

asInstanceOf[]isInstanceOf[]之间的区别是什么?

2 个答案:

答案 0 :(得分:6)

一般来说,a.asInstanceOf[B]执行实际的强制转换:它接受A类型的对象并返回(如果可能)B类型的对象,而a.isInstanceOf[B]返回boolean,指示a是否具有是否输入B

严格来说isInstanceOf [B]不仅看起来是一个类型B,而且如果a在上层继承树中有一个类型B(所以如果a的B超类,isInstanceOf产生为真)并且重要的通知是isInstanceOf工作在实际的对象类型层次上而不是在引用类型上。

答案 1 :(得分:3)

我只想添加常用模式

if (x.isInstanceOf[B]) {
    val b = x.asInstanceOf[B];
    ...
} else ...

可以很好地编写为

x match {
    case (b: B) => ...
    ...
}

如果对单个x进行多次此类测试,则此功能特别有用。