GenericTypeResolver.resolveTypeArguments returns 空

GenericTypeResolver.resolveTypeArguments returns null

我有以下代码:

List strings = new ArrayList<String>();
strings.add("string");
System.out.println(GenericTypeResolver.resolveTypeArguments(String.class, strings.getClass()));

它打印 null

我无法理解这个方法签名。

我想检查 strings 参数化为 String

如何正确使用resolveTypeArguments

P.S.

我的例子只是假的。

P.S.2

我知道 spring 可以用转换器接口做这样的事情

此实用程序用于查找 具体化 类型参数。在这种情况下,这意味着信息必须在 class 本身中可用。

第一个参数是class您要解析的类型。第二个参数是第一个 class 实现的 superclass 或接口,它具有通用类型参数。

下面是 Integer 的一个示例(它实现了 Comparable<Integer>):

Class[] typeParams = GenericTypeResolver.resolveTypeArguments(
                            Integer.class, Comparable.class);
//typeParams would be [Integer.class] 

在您的示例中,strings 的类型参数 被具体化(它已被 擦除 )等等此实用程序将 return 为 null,即使您要修复调用它的方式(即 resolveTypeArguments(strings.getClass(), Collection.class)