使用Spring ApplicationContext及其方法getBeansOfType
我遇到了泛型类型的问题。这表明问题:如何实现从List <SomeParamType>到List的转换<SomeParamType <?>>
class Test
{
List<Generator<?>> allGenerators =
new ArrayList(getBeansOfType(Generator.class).values()); // Raw type warning
// for new ArrayList()
<T> Map<String, T> getBeansOfType(Class<T> klass) {
return emptyMap();
}
}
interface Generator<R> {}
我从容器中检索所有参数化类型的bean。我想让它们为Generator<?>
,并使用自定义逻辑根据每个实例的属性安全地转换为相应的类型参数。
我的问题是,我找不到任何方式分配到allGenerators
没有类型安全警告,即使在概念层面上,我没有承诺任何未检查的类型参数。我只想将原始类型转换为通配符类型。
有没有什么成语不需要@SuppressWarnings
去那里?
但是,这清楚地给'Generator g'上的“原始类型”警告。您可以在Eclipse中禁用该警告,但这不是我想要的。 –
@MarkoTopolnik如果我使用'Generator >'作为'g'的类型(至少代码编译并且我没有收到任何警告),似乎可以。 – Raffaele
您必须在编译器设置中启用-Xlint:unchecked IntelliJ查看警告,或者在启用此设置的情况下手动编译它。 –