16

Scalaでは、

{ x: Option[Int] => x }
   .getClass
   .getMethod("apply", classOf[Option[_]])
   .getGenericParameterTypes

を返しますArray(scala.Option<java.lang.Object>)Array(scala.Option<scala.Int>)当初は代わりに表示されることを期待していましたが、これscala.Intは値クラス(extends AnyVal)であり、そのインスタンスは基盤となるホストシステムによってオブジェクトとして表されていません。

しかし、私はまだ消去を理解していませんObject。それははるかに便利ではないjava.lang.Integerでしょうか?

4

1 に答える 1

12

それははるかに便利ではないjava.lang.Integerでしょうか?

はい、そしてそれはかつてもそうでした。残念ながら、それは型署名の破損につながります。つまり、がに消去された場合、すべての状況で正しいバイトコードを生成することは不可能Intjava.lang.Integerです。

これに関する単一のチケットやコミットはありませんが、この特定の動作を変更したのは、このコミットのscala / bug#4214です。

于 2012-06-23T16:43:27.580 に答える