在使用Spring ApplicationContext及其方法
我从容器中检索出所有参数化类型的bean。我想将它们作为
我的问题是,我找不到任何方法来分配给
有没有任何习惯用法不需要
getBeansOfType
时,我遇到了与泛型类型相关的问题。以下示例说明了这个问题: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<?>
,并使用自定义逻辑根据每个Generator
实例上的属性安全地强制转换为相应的类型参数。我的问题是,我找不到任何方法来分配给
allGenerators
而不会出现类型安全警告,即使在概念上我没有承诺任何未经检查的类型参数。我只想将原始类型转换为通配符类型。有没有任何习惯用法不需要
@SuppressWarnings
来实现这一点?
Generator g
上产生“原始类型”警告。你可以在 Eclipse 中禁用该警告,但那不是我的目标。 - Marko Topolnik@SuppressWarning
是唯一的方法,没有库支持的话(getBeansOfType
应该与适用于类型标记的方法配对使用)。 - RaffaeleGenerator
是一个原始类型,可以安全地转换为Generator<?>
。List<Generator>
不是原始类型,这就是为什么转换是非法的原因。 - Raffaele