如何在Spring 2.5中设置枚举为枚举和obj作为值的映射?

时间:2013-10-25 23:44:13

标签: java spring

public class Foo {
   public enum myEnum {ONE, TWO};
}

public class Var {

}

public class Dummy {
    Map<myEnum, Var> myMap = null
}

我的xml文件

<bean id="enumOne" class="com.myClass.Foo.myEnum" factory-method="valueOf">
    <constructor-arg>
        <value>One</value>
    </constructor-arg>
</bean>

我收到错误消息:

  

java.lang.ClassNotFoundException,com.myClass.Foo.myEnum

如何使用Spring framework 2.5设置包含枚举键的地图?

1 个答案:

答案 0 :(得分:0)

正如我在你的另一个问题中解释的那样,嵌套enum的正确限定类名是

Foo$myEnum

显然附加在它所在的任何包中,可能

com.myClass.Foo$myEnum

请注意,java命名约定规定包名称应为小写,并且类型名称(接口,类或枚举)应以大写字符开头。

此外,您的枚举常量名为ONE,因此您可以使用valueOf来引用它。例如

myEnum.valueOf("ONE");

因此,您的bean声明变为

<bean id="enumOne" class="com.myClass.Foo$myEnum" factory-method="valueOf">
    <constructor-arg>
        <value>ONE</value>
    </constructor-arg>
</bean>

对于地图,请使用util:map和正确的合格类名称(将String更改为您要使用的任何类型)

<util:map id="aMap" map-class="java.util.HashMap" key-type="com.myClass.Foo$myEnum" value-type="java.lang.String">
    <entry>
        <key>
            <ref bean="enumOne"/>
        </key>
        <value>
            Hello World
        </value>
    </entry>
</util:map>