asInstanceOf[]
とはどう違いisInstanceOf[]
ますか?
2544 次
2 に答える
6
一般的に言えば、a.asInstanceOf[B]
実際のキャストを実行します。タイプ A のオブジェクトを受け取り、(可能であれば) タイプ B のオブジェクトを返しますが、タイプがあるかa.isInstanceOf[B]
どうかを示すブール値を返します。a
B
厳密に言えば、 isInstanceOf[B] は、a が B 型である場合だけでなく、a が上位側の継承ツリーに B 型を持っている場合 (つまり、B が a のスーパークラスである場合、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) => ...
...
}
これは、1 つの に対してこの種のテストが複数ある場合に特に便利ですx
。
于 2013-07-11T12:46:19.700 に答える