sha*_*ngc 2 reflection scala type-erasure
当type参数为Int时,我无法弄清楚如何获取Option的type参数
我尝试了以下代码:
class TestClass {
val intField: Option[Int] = Some(1)
}
val cls = new TestClass
val field = cls.getDeclaredField("intField")
val typeParams = field.getGenericType.asInstanceOf[ParameterizedType].getActualTypeArguments
Run Code Online (Sandbox Code Playgroud)
typeParams给了我java.lang.Object
我的问题是如何让它将java.lang.Integer返回给我
小智 7
确切的泛型类型信息在运行时丢失.请参阅反映泛型并注意:
...虽然JVM 不会跟踪泛型类实例的实际类型参数,但它会跟踪泛型类的子类的实际类型参数.
这里没有子类 - 因此是Object和不是的原因Integer.也许看看Manifests(一个Scala技巧用于隐式的具体类型)?
快乐的编码.
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |