在Scala中,
{ x: Option[Int] => x }
.getClass
.getMethod("apply", classOf[Option[_]])
.getGenericParameterTypes
返回Array(scala.Option<java.lang.Object>)
。我最初期望看到Array(scala.Option<scala.Int>)
,但我看到scala.Int
是一个值类(扩展AnyVal
)',其实例未被底层主机系统表示为对象'
但我仍然不理解对Object
的删除。难道不是更有用java.lang.Integer
吗?
答案 0 :(得分:6)
它不是更有用
java.lang.Integer
吗?
是的,一次就是这种情况。不幸的是,这会导致类型签名破损。也就是说,如果将Int
删除到java.lang.Integer
,则无法在所有情况下生成正确的字节码。
没有关于此的故障单或提交,但在SI-4214中更改了此特定行为的是this commit。