【发布时间】:2011-09-10 17:02:50
【问题描述】:
我正在尝试从课程中读取通用信息。这就是我正在做的事情:首先我有一个 EntityHelper 类。在里面的某个地方,我想看看那个 T 到底是什么。 我知道可以这样做:
(Class<T>) ((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];
但是 getGenericSuperClass 返回的方法是 java.lang.Object - 这是不正确的,因为我知道 T 是其他东西,例如 DummyEntity。
我使用的 Android 平台是 7。这是某种错误还是我遗漏了一些重要的东西?
【问题讨论】:
-
如何将
java.lang.reflect.Type转换为Class<T>? -
编译器不反对,它在运行时工作。例如: (Class>) ((ParameterizedType) f.getGenericType()).getActualTypeArguments()[0];其中 f 是 java.lang.Field。类实现了 Type - 也许它不是很好,但它可以工作。
-
Class implements Type- 我错过了。 -
如何获得实际的泛型类型? java中的泛型是一种编译时机制(Type erasure)。
-
实现这个效果的唯一方法是将
Class<T>类型保存为成员变量。
标签: android generics reflection superclass