我有以下代码:
List strings = new ArrayList<String>();
strings.add("string");
System.out.println(GenericTypeResolver.resolveTypeArguments(String.class, strings.getClass()));
它打印null
。
我无法理解此方法签名。
我想检查strings
是否用String
参数化。
如何正确使用resolveTypeArguments
?
P.S
我的例子只是个傻瓜。
第2页
我知道spring可以用Convertor接口
此实用程序用于查找具体化的类型参数。在这种情况下,这意味着信息必须在类本身中可用。
第一个参数是您试图解析的类型的类。第二个参数是第一个类实现的超类或接口,它具有泛型类型参数。
以下是Integer
(实现Comparable<Integer>
)的一个示例:
Class[] typeParams = GenericTypeResolver.resolveTypeArguments(
Integer.class, Comparable.class);
//typeParams would be [Integer.class]
在您的示例中,strings
的类型参数未被具体化(它已被擦除),因此该实用程序将返回null,即使您要修复如何调用它(将是resolveTypeArguments(strings.getClass(), Collection.class)
)