2012-01-11 8 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. 

は、私は春に3 IDを持つ避けたい3つの列挙フィールドに言います。あなたの春の構成では

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

あなたが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?を参照してください。

+0

私は更新された質問をチェックしてください。不要なif文を避けるにはどうすればいいですか? – user903887

+0

これに関する提案はありますか? – user903887

関連する問題