gpt4 book ai didi

scala - 为什么在Scala中将Int等原始类型删除为Object?

转载 作者:行者123 更新时间:2023-12-03 20:51:44 24 4
gpt4 key购买 nike

在斯卡拉,

{ 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 ?

最佳答案

Couldn't it be the much more useful java.lang.Integer?


是的,曾经也是这样。不幸的是,这会导致类型签名损坏。也就是说,如果 Int,不可能在所有情况下都生成正确的字节码。被删除到 java.lang.Integer .
没有关于此的单一票证或提交,但改变此特定行为的票证是 scala/bug#4214 , 在 this commit .

关于scala - 为什么在Scala中将Int等原始类型删除为Object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11167430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com