【发布时间】:2012-02-02 11:57:02
【问题描述】:
假设一个泛型类型声明(Java)
class Foo<T> {
public T bar;
}
如何在运行时实例化一个 Type 对象,该对象表示 Foo 在特定类型 T 上的参数化(也仅在运行时才知道)?
【问题讨论】:
-
为什么需要它?类型擦除使这个想法变得毫无意义,因此请尝试解释您要实现的目标。
-
我需要它以便在从 JSON 字符串反序列化时为(反)序列化库(在本例中为 google gson)提供一个表示我预期类型的类型对象。擦除不会使其毫无意义,因为类型对象将在运行时进行检查。
-
“我使用的库需要将字段视为运行时提供的类型”,“表示我预期类型的类型对象”这是什么意思?你能详细说明你想做什么吗?
-
@Viruzzo,我需要使用反射(在本例中为 gson)告诉库,我希望它从 JSON 字符串实例化填充特定类型的对象。 Gson 将使用反射来检索字段栏的类型,我想控制该类型将被视为什么以指导反序列化。
标签: java generics reflection