2011-06-21 76 views
3

我有一個需要枚舉的方法。 say方法是methodName(MyTypes),其中MyTypes位於另一個類中。 Data{ enum MyTypes{ Id, Value.... } }使用反射從字符串構建枚舉

我想動態調用此方法。要調用我必須從輸入字符串構建一個類型爲MyTypes的emum。輸入字符串是說例如MyTypes.Value。 如何從這個字符串中動態構建枚舉實例並傳入方法?

當我做method.getGenericParameterType()返回我是這樣的 [類packagename.Data $ MyTypes]

使用所需的通用型和字符串值如何建立枚舉這2個東西

在此先感謝。

+0

得到枚舉值爲什麼你需要使用反射? Data.MyTypes.valueOf(text)足夠你或者你需要反思,因爲你沒有告訴我們的原因?你也可以通過反思來獲得。例如,如果枚舉類名稱也是一個參數,則可能需要它。 – aalku

+0

看看這個答案,這正是你和我想要的.. http://stackoverflow.com/a/3735968/2881350 –

回答

5

你的意思是?

String text = 
MyType myType = MyType.valueOf(text); 
+0

感謝彼得這是有用的。 –

1

是否有你想使用反射的原因? valueOf方法不夠嗎?請參閱this

+1

這是很好,如果類型是動態的。如果你知道你想要的類型,你可以使用'MyEnum.valueOf(String)' –

+0

正確,看到反射,所以我認爲枚舉類型也是動態的。 +1給你的答案。 – ddewaele

3

類似的東西:解析字符串得到的類名「MyTypes」,然後得到使用Class.forName(String)實際的類對象,然後使用靜態Enum.valueOf(Class,String)

+0

謝謝它很有用。 –