在使用Spring ApplicationContext及其方法时,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> {}
Run Code Online (Sandbox Code Playgroud)
我从容器中检索参数化类型的所有bean.我希望将它们作为Generator<?>并使用自定义逻辑根据每个Generator实例上的属性安全地转换为适当的类型参数.
我的问题是,我找不到任何方式来分配allGenerators没有类型安全警告,即使在概念层面我不承诺任何未经检查的类型参数.我只想将原始类型转换为通配符类型.
是否有任何成语不需要@SuppressWarnings到达那里?
实际上不是转换,而是一个在没有警告的情况下构建所需类型列表的程序:
public List<Generator<?>> solution() {
List<Generator<?>> dst = new ArrayList<>();
for (Generator<?> g : getBeansOfType(Generator.class).values()) {
dst.add(g);
}
return dst;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |