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)
)
我有以下代码:
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)
)