【问题标题】:enum to class object conversion枚举到类对象的转换
【发布时间】:2012-01-11 09:54:35
【问题描述】:

我得到枚举值作为输入,每个枚举值对应一个类。 如何定义给定枚举值的弹簧配置应转换为类对象

public enum R {
eR1,
eR2,
eR3;
}

//simple interface
interface R {
    dosomething();
}

//R1 class
class R1 implements R {
    dosomething() {
    //implmentation for R1
    }
}

//R2 class
class R2 implements R {
    dosomething() {
        //implementation for R2
    }
}

我有 API 说,

getR(R er1) {
   //How do I define spring configuration to get class object given enum value??
}

I want to avoid if conditions in API, something like this
getR(R er) {
    if(er.equals(R.eR1)) {
        //do this
    } else if(er.equals(R.eR2)) {
       //do this
    }
}
I want to spring to inject right class based on input parameter so that I can avoid if statement.

对于三个枚举字段,我想避免在春季使用三个 id。

Can I define somethign like this
<bean id="r" class="com.myProject.R1">
    <property name="er1" value="eR1"/>
</bean>
<bean id="r" class="com.myProject.R2">
    <property name="er2" value="eR2"/>
</bean>
//similary for R3 as well

【问题讨论】:

    标签: java spring enums


    【解决方案1】:

    在你的 spring 配置中只使用枚举值

    如果您想在 R2 中注入 eR2,则进行采样,

     <bean id="r2" class="com.myProject.R2">
         <property name="er2" value="eR2"/>
     </bean>
    

    查看示例 here 。您不需要使用完全限定名称。请参阅How assign bean's property an Enum value in Spring config file? 的讨论。

    【讨论】:

    • 我已经更新了问题,请检查一下,如何避免不必要的 if 语句
    • 有人对此有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 2018-09-30
    • 2012-08-12
    • 2023-02-21
    • 2012-05-05
    • 1970-01-01
    • 2010-10-11
    相关资源
    最近更新 更多