java - 在 Java 中的运行时确定泛型类型参数

标签 java generics gson

class Json<T>
{
  @SerializedName( "T's type here" ) 
  private final ArrayList<T> _bucket = new ArrayList<T>( 5 );
  ...
}

我想知道如何(如果可能的话)在运行时确定类的通用参数。从我读到的内容来看,这对于泛型类型的子类是可能的,但我一直无法找到如何使用类型本身来做到这一点。这些链接中有一些很棒的信息,但我不确定这是否是我要找的。

http://blog.xebia.com/2009/02/07/acessing-generic-types-at-runtime-in-java www.artima.com/weblogs/viewpost.jsp?thread=208860

我最终想要完成的是让 Gson 将上面的 '_bucket' 变量序列化为类型 'T' 的类名。

如果有人能指出正确的方向,我将不胜感激。

最佳答案

在给定示例中,泛型类型在运行时不可用。通用类型信息只有在编译时指定的情况下才能通过反射获得——例如,如果您定义了一个子类 SomeTypeJson extends Json<SomeType> .

作为一个拼凑,您可以通过检查 List 的内容来猜测泛型类型。 ,通过反射找到最具体的公共(public)父类(super class)。

关于java - 在 Java 中的运行时确定泛型类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3259627/

相关文章:

java - ArrayList 的索引

java - 来自 Bukkit 插件的 Retrofit API 调用失败(IllegalAccessException)

java - Jackson 解析器 json setter 将值作为字符串数组

java - 以下 Guava 开发新功能

java - 检查链 "get"调用 null

java - 使用 openapi 和 openapi-generator-maven-plugin 的 requestbody 中的多个文件

java - Java 中的泛型类型

具有上界通配符的 Java 泛型

JAVA:泛型编译时间常量

java - 使用gson将列表反序列化为不可修改的集合