【发布时间】:2017-06-07 23:16:27
【问题描述】:
我有以下两个课程:
class ProblematicConverter implements Converter<List<?>> {};
class NonProblematicConverter implements Converter<List> {};
Utils类的方法和方法:
<T> void addConverter(Class<? extends T> cls, Converter<T> converter);
现在,第一个函数调用正常,但第二个产生错误:
addConverter(List.class, new ProblematicConverter());
addConverter(List.class, new NonProblematicConverter());
错误提示:
“Utils类型中的方法addConverter(Class, Converter)不适用于参数(Class, ProblematicConverter)”
我不明白为什么会这样。
【问题讨论】:
-
List不是List<?>的子类型。 (实际上是另一种方式。)你想在这里做什么?在我看来,您似乎不太可能按原样工作。您需要使用 GuavaTypeToken之类的东西,否则会真正放松addConverter的声明。 -
@Radiodef 函数 addConverter 由第三方库提供,我无法更改。我必须实现实现转换器的类。当我使用 NonProblematicImplementation 时一切都很好,但我收到有关原始 List 类型的编译器警告。所以我开始纠正我的代码中的警告。
标签: java generics compiler-errors