我正在使用Spring 3,我有一个带有签名My.Package.MyClass.build(Map<MyObject1,MyObject2> map)
的静态方法的类。在我的spring bean文件中,我有以下内容:
<constructor-arg index="1"
value="#{T(My.Package.MyClass).build(TheMap)}" />
<util:map id="TheMap">
...add map entries...
</util:map>
当我运行此操作时,我收到一条错误消息,指出在build(java.util.LinkedHashMap)
类型上找不到方法My.Package.MyClass
。我做了一些测试,当我从方法签名中删除泛型时,它工作正常。我认为这种转换会起作用。谁能告诉我我做错了什么?
谢谢, 杰夫
答案 0 :(得分:0)
使用此配置对我有用:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
">
<bean id="object1" class="sk.matejtymes.elTest.Object1"/>
<bean id="object2" class="sk.matejtymes.elTest.Object2"/>
<util:map id="theMap">
<entry key-ref="object1" value-ref="object2"/>
</util:map>
<bean id="elTestClass" class="sk.matejtymes.elTest.ElTestClass">
<constructor-arg index="0"
value="#{T(sk.matejtymes.elTest.ElTestClass).build(theMap)}"/>
</bean>
</beans>
并对此测试类进行分类:
public class ElTestClass {
private Map<Object1, Object2> map;
public ElTestClass(ElTestClass orig) {
this.map = new LinkedHashMap<Object1, Object2>(orig.map);
}
private ElTestClass(Map<Object1, Object2> map) {
this.map = map;
}
public static ElTestClass build(Map<Object1, Object2> map) {
return new ElTestClass(map);
}
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("/elTest/application-context.xml");
ElTestClass elTestClass = context.getBean(ElTestClass.class);
System.out.println(elTestClass);
}
}
注意:类Object1和Object2完全为空。