TypeRef和Type之间有什么区别?

4

我看到reflect.runtime.TypeRefreflect.runtime.Type多了三个方法,但是两者之间的主要区别是什么?为什么Type没有包含这些方法?而我该如何检索TypeRef的值?


通常情况下,Type 可以转换或匹配到 TypeRef - 在反射示例中您会一遍又一遍地看到这种情况。我认为真正有趣的问题可能是“什么时候 Type 不是 TypeRef?” - J Cracknell
一个有趣的案例是存在类型,比如 List[_],它可以被转换为 TypeRef,但是当你尝试访问 args 时会抛出异常。这实际上很像一个 bug。 - J Cracknell
1个回答

4

规范类型模式匹配显示了所有不是TypeRef的内容,即在TypeRef提取器之后的所有内容。

例如,方法类型与类不同,不会以相同的方式使用类型参数。 f [Int]并不意味着“专门针对Int的f”,就像List [Int]List [Any]的子类型一样,或者String => IntString => Any也是如此。 因此,方法类型没有类型参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接