5

なぜAnyValをisInstanceOfチェックで使用できないのか疑問に思いました。この動作の背後にある理由は何ですか?

scala> val c = 't'
c: Char = t

scala> c.isInstanceOf[AnyVal]
<console>:12: error: type AnyVal cannot be used in a type pattern or isInstanceO
f test
             c.isInstanceOf[AnyVal]
4

1 に答える 1

11

AnyVal実行時にもう存在しません。コンパイル時のみ。言い換えれば、JVMプリミティブをファーストクラスのオブジェクトと見なすのは単なるコンパイラの「トリック」です。

ただし、このisInstanceOfメソッドは実行時に実行されるため、機能しません。したがって、コンパイラエラー。

于 2012-06-17T14:37:36.983 に答える