java - 枚举到类对象的转换

标签 java spring enums

我获取枚举值作为输入,每个枚举值对应于一个类。 如何定义 spring 配置给定的枚举值应转换为类对象

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.

假设对于三个枚举字段,我想避免在 spring 中拥有三个 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

最佳答案

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

示例如果你想将 eR2 注入(inject) R2 内,

 <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? 上的讨论.

关于java - 枚举到类对象的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8817263/

相关文章:

java - Spring WS 2.1.0 : Endpoint interceptors order

java - Spring REST巨大的响应导致响应编写器被多次调用

c++ - SWIG 和 C++ 枚举类

java - Java 中的解析错误

java - 组织.hibernate.TransactionException : JDBC begin failed i

java - 为未知类型的枚举器对象设置值

Swift 检测碰撞和设置枚举

java - 生产代码中的 Eclipse Collection 用法

java - 如何在DynamoDB中基于HashKey和range Key做Query?

java - Vaadin Spring PLupload-Addon 上传文件失败