Spring3.0表达式语言Java通用参数

Spring3.0表达式语言Java通用参数,java,spring,generics,spring-el,Java,Spring,Generics,Spring El,我使用的是Spring3,我有一个带有签名为My.Package.MyClass.build(Map-Map)的静态方法的类。在我的SpringBean文件中,我有以下内容: <constructor-arg index="1" value="#{T(My.Package.MyClass).build(TheMap)}" /> <util:map id="TheMap"> ...add map entries... </util:map>

我使用的是Spring3,我有一个带有签名为
My.Package.MyClass.build(Map-Map)
的静态方法的类。在我的SpringBean文件中,我有以下内容:

<constructor-arg index="1"
        value="#{T(My.Package.MyClass).build(TheMap)}" />

<util:map id="TheMap">
 ...add map entries...
</util:map>

…添加地图条目。。。
当我运行这个程序时,我得到一个错误,说明在
My.Package.MyClass
类型上找不到方法
build(java.util.LinkedHashMap)
。我做了一些测试,当我从方法签名中删除泛型时,它工作得很好。我认为这种转换会起作用。谁能告诉我我做错了什么

谢谢,
Jeff

使用此配置对我有效:

<?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);
    }
}
public类ElTestClass{
私人地图;
公共ElTestClass(ElTestClass orig){
this.map=newlinkedhashmap(orig.map);
}
私有ElTestClass(地图){
this.map=map;
}
公共静态ElTestClass生成(映射){
返回新的ElTestClass(地图);
}
公共静态void main(字符串[]args){
ApplicationContext context=new ClassPathXmlApplicationContext(“/elTest/application context.xml”);
ElTestClass=context.getBean(ElTestClass.class);
System.out.println(elTestClass);
}
}

注意:Object1和Object2类完全为空。

我可以使用以下配置:

<?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);
    }
}
public类ElTestClass{
私人地图;
公共ElTestClass(ElTestClass orig){
this.map=newlinkedhashmap(orig.map);
}
私有ElTestClass(地图){
this.map=map;
}
公共静态ElTestClass生成(映射){
返回新的ElTestClass(地图);
}
公共静态void main(字符串[]args){
ApplicationContext context=new ClassPathXmlApplicationContext(“/elTest/application context.xml”);
ElTestClass=context.getBean(ElTestClass.class);
System.out.println(elTestClass);
}
}

注意:Object1和Object2类完全为空。

很有趣,谢谢。我将回到我的代码,并尝试找出不同之处。如果您发布一些代码片段,问题可能会更明显,更有趣,谢谢。我将回到我的代码,并尝试找出不同之处。如果您发布一些代码片段,问题可能会更加明显