2011-07-08 5 views
3

から値を受け取るJavaの列挙型は、私が列挙等を有していて、文字列名

public static void main(String... args) 
{ 
    for (Enum2 e : Enum2.values()) 
    { 
     System.out.println(e); 
    } 

} 

を私は列挙型の唯一の文字列名を持っている場合、リスト値、それは可能ですか?

String enum_name="Enum2"; 

例えば、いくつかのロジックのような場合:

if (a>b) 
{ 
enum_name="EnumA"; 
} 
else 
{ 
enum_name="EnumB"; 
} 

そして、私は列挙型の文字列名を受け取った後、すべての値をリストすることができます。

答えて

2
Class<?> enumClazz = Class.forName("com.mycompany.Enum2"); 
for (Enum<?> e : ((Class<? extends Enum<?>>)enumClazz).getEnumConstants()) { 
    System.out.println(e.name()); // The variable "e" would be Enum2.ONE, etc 
} 

ありがとうございます。この権利を得るのを手伝ってくれてありがとうございます。

+0

'(Class <?extends Enum >)' –

+0

run: '例外" main "java.lang.Error:未解決のコンパイル問題: \t型の不一致:Class からClass <?に変換できません。 Enum > ' –

+0

今すぐ正しいです。 –

-1

はい、

Enum2.EnumA.toString(); 
+0

彼はコンパイル時にEnum2を知らない – user102008

1

であなたの質問はことはあまり明確ではないが、これはあなたが使用することができます

Class<?> cls = Class.forName("EnumName"); 
if (cls.isEnum()) { 
    Field[] flds = cls.getDeclaredFields(); 
    //-- your logic for fields. 
} 

をしたいかもしれないものである:Class.getEnumConstants()。詳細はthisを参照してください。

+0

私の答えは – Bohemian

+0

です*その答え: 'class'は列挙型の特別なメソッドを持っています – Bohemian

+0

+1あなたの助けを借りて申し訳ありませんが、それは間違っています) – Bohemian

関連する問題