Android Class.getGenericSuperclass 返回 java.lang.Object

标签 android generics reflection superclass

我正在尝试从类中读取通用信息。这就是我正在做的事情:首先我有一个 EntityHelper 类。在里面的某个地方,我想看看那个 T 到底是什么。 我知道这可以通过以下方式完成:

(Class<T>) ((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];

但是 getGenericSuperClass 返回的方法是 java.lang.Object - 这是不正确的,因为我知道 T 是其他东西,例如 DummyEntity。

我使用的 Android 平台是 7。这是某种错误还是我遗漏了一些重要的东西?

最佳答案

您无法获取参数的通用类型。泛型是使用一种称为 type erasure 的技术实现的.实现此效果的唯一方法是保存 Class<T>类型(即 使用 Class Literals as Runtime-Type Tokens ).

关于Android Class.getGenericSuperclass 返回 java.lang.Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6276424/

相关文章:

c# - 动态获取属性值

Golang 反射 : passing a sturct member variable to a function and return its tag name

android - 下载apk后如何自动启动Android安装程序?

android - 从 gradle 中读取字符串数组

c# - Autofac。如何在构造函数中注入(inject)一个开放的通用委托(delegate)

java - 调用方法之前的 Java 泛型表示法是什么?

c# - 从对象中获取 List<T> 的类型

c# - Assembly.GetAssembly(类型)与类型.Assembly

java - startActivityForResult 包含三个 Activity

java - 调整位图大小