gpt4 book ai didi

scala - 为什么 getActualTypeArguments 返回 Object 而不是 Option[Int] 的 Integer?

转载 作者:行者123 更新时间:2023-12-04 17:29:07 36 4
gpt4 key购买 nike

当类型参数为 Int 时,我无法弄清楚如何获取 Option 的类型参数

我尝试了以下代码:

class TestClass {
val intField: Option[Int] = Some(1)
}

val cls = new TestClass
val field = cls.getDeclaredField("intField")
val typeParams = field.getGenericType.asInstanceOf[ParameterizedType].getActualTypeArguments

typeParams 给我 java.lang.Object

我的问题是如何让它返回 java.lang.Integer 给我

最佳答案

准确的泛型类型信息在运行时丢失了。参见 Reflecting generics并注意:

...while the JVM will not track the actual type arguments for instances of a generic class, it does track the actual type arguments for subclasses of generic classes.

这里没有子类——因此是Object 而不是Integer 的原因。也许看看Manifests (a Scala trick for implicit reified types)

快乐编码。

关于scala - 为什么 getActualTypeArguments 返回 Object 而不是 Option[Int] 的 Integer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264625/

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