我知道如果我有一个带有泛型类型参数的字段,比如这个
List<String> mList
如果我可以获得对该字段的引用,我可以使用此代码来确定泛型类型实际上是一个字符串:
((ParameterizedType field.getGenericType()).getActualTypeArguments()
然而,我的问题有点复杂。我们有一个看起来像这样的超类:
abstract class CustomList extends List<T> {
List<T> mList;
}
然后我们有另一个看起来像这样的类:
class FooList extends CustomList<Foo> {
//...
}
当我尝试反思字段mList时,它告诉我那个泛型类型参数是T.有没有办法确定它实际上是Foo类型?如果我可以确定FooList类有一个通用参数Foo,那可能就足够了,但我不知道该怎么做?
答案 0 :(得分:0)
实际上stackoverflow.com/questions/11164756/无法解决您的问题。
您想从List.T
推断出FooList
,而不是CustomList.T
。
您可以使用我的实用工具类GenericUtil
getGenericTypes(FooList.class, List.class); // return {Foo.class}
它不仅可以处理任何类型的通用类型。