class Json<T>
{
@SerializedName( "T's type here" )
private final ArrayList<T> _bucket = new ArrayList<T>( 5 );
...
}
我想知道如何(如果可能的话)在运行时确定类的通用参数。从我读到的内容来看,这对于泛型类型的子类是可能的,但我一直无法找到如何使用类型本身来做到这一点。这些链接中有一些很棒的信息,但我不确定这是否是我要找的。p>
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/