gpt4 book ai didi

java - map 中的 Spring 枚举

转载 作者:行者123 更新时间:2023-11-30 08:03:05 30 4
gpt4 key购买 nike

我列举了两个:

public enum One implements Representable{
ONE
}
public enum Two implements Representable{
TWO
}

现在,我需要声明以下 spring-bean:

<bean id="listGeneratorContainer" class="pack.age.Container>
<property name="generators">
<map key-type="pack.age.Representable"> <!-- How to specuify the Type? -->
<entry key="ONE" value="1"/>
<entry key="TWO" value="2"/>
</map>
</property>
</bean>

哪里

package pack.age;

public class Container{
private Map<Representable, Interger> generators
//GET, SET, staff
}

是否可以告诉 spring 注入(inject)不同类型的枚举?对于单个枚举来说这是很清楚的。

现在不工作:

 java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [pack.age.Representable]: no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:219)
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:107)
at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:362)
... 34 more

最佳答案

我认为您正在寻找将 Enum 作为键嵌入到 spring map 定义中的方法。 Here是一个相同的示例帖子。

<util:map id="myMap">
<entry key="#{T(com.acme.MyEnum).ELEM1}" value="value1" />
<entry key="#{T(com.acme.MyEnum).ELEM2}" value="value2" />
</util:map>

确保您像上面一样引用它。所以在你的情况下,它会是这样的。

<bean id="listGeneratorContainer" class="pack.age.Container>
<property name="generators">
<map key-type="pack.age.Representable">
<entry key="#{T(pack.age.ONE)ONE}" value="1"/>
<entry key="#{T(pack.age.TWO)TWO}" value="2"/>
</map>
</property>

希望有帮助。

关于java - map 中的 Spring 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31590555/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com