我使用的方法是ApplicationContext.getBean(String name,Class requiredType)。 bean的类型为util:set。我的代码如下:
Set<String> mySet = context.getBean("myBean", Set.class);
我想知道如何做这样的事情来避免类型转换警告:
Set<String> mySet = context.getBean("myBean", Set<String>.class);
我不确定是否可以用这种方式定义类的类型。我在做梦还是有办法做到这一点?
感谢。
答案 0 :(得分:3)
不是真的,但有一个运行时解决方法,至少不需要@SuppressWarnings。你可以让你的类抽象化,让Spring测试你的代码:
public abstract class Test {
Set<String> getMyBean();
}
然后在XML配置中注入lookup method:
<bean class="Test">
<lookup-method name="myBean" bean="myBean" />
</bean>
它不是真正静态检查,但它在运行时失败 - 你保持丑陋的代码你的代码。
答案 1 :(得分:1)
也许这对你有用:
Set<String> setBean= null;
Map<String, Set> beans = applicationContext.getBeansOfType(Set.class);
for (Map.Entry<String, Set> bean: beans.entrySet()) {
ParameterizedType thisType = (ParameterizedType) bean.getClass().getGenericSuperclass();
Class<?> parametrizedClass= thisType.getActualTypeArguments()[0];
if (parametrizedClass.isAssignableFrom(String)) {
setBean= (Set<String>) bean;
}
}