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设置包含枚举键的地图?
答案 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>