asInstanceOf[]
和isInstanceOf[]
之间的区别是什么?
答案 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
进行多次此类测试,则此功能特别有用。