我一直在尝试使用来在Spring中定义一个EnumMap。我尝试了以下变体

<util:map map-class="java.util.EnumMap" key-type="xyz.EnumType">
<entry key="SOME_ENUM_TYPE">
   <ref bean="someBean"/>
</entry>
</util:map>

我收到以下错误
Error creating bean with name 'util:map#1c599b0e': Invocation of init method failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util.EnumMap]: No default constructor found; nested exception is java.lang.NoSuchMethodException: java.util.EnumMap.<init>()

以下定义是我最初尝试的
<util:map map-class="java.util.EnumMap">
<entry key="SOME_ENUM_TYPE">
   <ref bean="someBean"/>
</entry>
</util:map>

这给了我一些无法将枚举类型分配给String的错误。

网站上有使用通用 map 的示例,但是我试图查看是否可以使用EnumMap,因为它被认为是最适合枚举的。答案可能很明显,所以我很抱歉这个问题很愚蠢。这可能是由于我对Spring的了解有限。谢谢

最佳答案

我猜你不能用EnumMap初始化<util:map>。但是,EnumMap具有使用现有Map的构造函数,您可以尝试使用它:

<bean class = "java.util.EnumMap">
    <constructor-arg>
        <util:map key-type="xyz.EnumType">
            <entry key="SOME_ENUM_TYPE"><ref bean="someBean"/></entry>
        </util:map>
    </constructor-arg>
</bean>

关于spring - 如何在Spring 3.0中定义EnumMap,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8581228/

10-10 02:31