gpt4 book ai didi

scala - 为什么ClassTag的runtimeClass方法返回一个通配符类?

转载 作者:行者123 更新时间:2023-12-04 18:05:10 24 4
gpt4 key购买 nike

runtimeClass ClassTag[T]的方法返回 Class[_] .我希望它返回 Class[T] ,因为我们知道 ClassTag[T]表示 T 的(运行时)类.

为什么它返回“任何”Class ?这有什么根本原因吗?

最佳答案

感谢 Eugene Burmako(通过 scala-internals),我们有以下反例:

scala> classTag[Array[_]].runtimeClass
res0: Class[_] = class java.lang.Object
Array[T]在运行时不会删除其类型参数(与其他泛型不同)。因此,不可能表示通配符 Array输入准确 Class .因此回退到 Object .

有趣的是,同样的论点也适用于 classOf 的类型。 (正如@sjrd 提到的):
scala> classOf[Array[_]]
res0: Class[Array[_]] = class java.lang.Object

哪里可以说 class java.lang.Object不是类型 Class[Array[_]] .

Post on scala-internals

关于scala - 为什么ClassTag的runtimeClass方法返回一个通配符类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28467291/

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