2013-01-24 55 views
2

可能重複:
How do I invoke a Java method when given the method name as a string?它的名字調用一個方法

我有10種方法命名爲:m1m2m3,...

這樣的:

public void m1(){ 
.. 
} 

如何在'for'循環中用字符串調用它們?

我想這樣做:在this對象

for (int i=1;i<11;i++){ 
    invoke('m'+i); 
} 
+1

您需要使用一個名爲「反射」的功能 –

+0

這不是真的重複。簡單的答案是使用反射,但是像這樣的設計是錯誤的。您應該,直到Java以閉包形式使用接口定義方法簽名並遍歷實現該接口的對象並調用其定義的方法時,才能獲得一流的方法。 –

回答

4

您需要使用reflection才能達到此目的。

Method method = getClass().getMethod(methodName); 
    method.invoke(this); 

因此,您需要將您的方法名稱存儲在一個數組中,並使用此代碼片斷逐個調用這些方法。

+0

虐待只是添加,並說如果你想添加一個參數,添加他的類在getmethod()作爲第二個參數,並添加參數在調用()作爲第二個參數。 – Wops

-1

使用Java反射。

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 –

+0

提供一些指導方針,提示和不具體答案的目的不是嗎?我的意思是,教一個人如何釣魚,但不給他已經被捕的魚... – GeorgeVremescu

+0

你的答案似乎是評論,而不是一個真正的答案。如果你想給出良好的答案,寫好描述和適當的格式答案.. –

0

你可以用reflection來做到這一點。

但是,我會對你的用例感興趣。通常可以重構應用程序,以便反射的使用是多餘的。

相關問題