asInstanceOf[]
和 和有什么不一样isInstanceOf[]
?
问问题
2544 次
2 回答
6
一般来说,a.asInstanceOf[B]
执行实际的强制转换:它接受类型 A 的对象并返回(如果可能的话)类型 B 的对象,而a.isInstanceOf[B]
返回指示是否a
具有类型的布尔值B
。
严格来说 isInstanceOf[B] 不仅看 a 是否为 B 类型,而且如果 a 在上侧继承树中具有 B 类型(所以如果 a 的 B 超类,isInstanceOf 产生 true),重要的注意是 isInstanceOf 在实际工作对象类型层次结构而不是引用类型。
于 2013-07-11T08:16:30.377 回答
3
我只想补充一下常见的模式
if (x.isInstanceOf[B]) {
val b = x.asInstanceOf[B];
...
} else ...
可以很好地写成
x match {
case (b: B) => ...
...
}
如果对单个x
.
于 2013-07-11T12:46:19.700 回答