2012-01-11 4 views
0

Я получаю значение перечисления в качестве входных данных, каждое значение перечисления соответствует классу. Как определить конфигурацию весной данное значение перечисления следует преобразовать в объект классаenum для преобразования объекта класса

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. 

сказать три поля перечислений Я хочу, чтобы избежать трех идентификаторов весной.

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 

ответ

1

В конфигурации яровой просто использовать значение перечисления

образец, если вы хотите, чтобы ввести Er2 внутри 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?.

+0

Я обновил вопрос, пожалуйста, проверьте, как я могу избежать ненужных, если заявления – user903887

+0

У кого-нибудь есть предложение по этому вопросу? – user903887

Смежные вопросы