【问题标题】:Spring: How do I inject ENUM in Spring configuration with generics?Spring:如何使用泛型在 Spring 配置中注入 ENUM?
【发布时间】:2013-04-23 16:13:37
【问题描述】:

我有这样的课:

public class CheckSetFilter<E extends Enum<E>> 
{
   public CheckSetFilter(CheckSetManager<E> pCheckSetManager, E pCheckSetId)
}

我有这个枚举:

public enum StubCheckId
{
   STUBCHECK1, STUBCHECK2
}

我尝试用 Spring 创建这样一个对象:

<bean id="checkSetFilter" class="com.iba.icomp.core.checks.CheckSetFilter">
   <constructor-arg ref="checkSetManager"/>
   <constructor-arg value="STUBCHECK1"/>
</bean>

它抱怨,它不能从字符串转换为枚举。我想这是因为泛型。它无法知道要创建的枚举类型。我也尝试给它一个类型提示,但没有运气。

【问题讨论】:

    标签: java spring generics


    【解决方案1】:

    你真正需要做的就是在constructor-arg标签添加一个value标签。

    <bean id="checkSetFilter" class="com.iba.icomp.core.checks.CheckSetFilter">
        <constructor-arg ref="checkSetManager"/>
        <constructor-arg>
            <value type="your.package.StubCheckId">STUBCHECK1</value>
        </constructor-arg>
    </bean>
    

    【讨论】:

    • 我发誓完全巧合:) 仅供参考所有enum 类都扩展了抽象类Enum&lt;E extends Enum&lt;E&gt;&gt;,其中Eenum 实现的类型。所以类型参数E extends Enum&lt;E&gt; 只是意味着“一些枚举类型”。
    • @PaulBellora 请您查看我的新答案,看看您是否喜欢 :-) 我更新了与问题中相同的泛型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    相关资源
    最近更新 更多