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

J. *_*lin 1 java generics gson

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

我想知道如何(如果可能的话)可以在运行时确定类的泛型参数.从我读过的内容可以看出泛型类的子类,但是我无法找到如何使用类型本身.这些链接有一些很好的信息,但我不确定这是我在寻找什么.

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'的类名.

如果有人能指出我正确的方向,我会很感激.

eri*_*son 6

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

作为一个kludge,您可以通过检查其内容来猜测泛型类型,List通过反射找到最具体的常见超类.