2010-08-05 77 views
0

例如,我有一個名爲變量(「辦法」),它是一個字符串,但我願做這樣的事情....我可以在Java中動態調用該方法嗎?

obj.method(); //The object called the method(); 

但我想改變。方法到一個動態的方法,這意味着,我想調用基於變量的方法。例如,如果我在我做這樣的事:

method = ".toString()"; 

有沒有什麼方法來幫助我這個字符串傳遞給對象,該對象將調用

obj.toString(); 

如果方法是

method = ".toChar()"; 

我想它叫

obj.toChar(); 

我該怎麼做?謝謝。

+5

你可以(見答案),但你不應該定期。 Java是靜態類型的,你應該使用這個好處。 – Bozho 2010-08-05 11:14:18

回答

5

對此使用反射API。在你的情況下,它會是這樣的:

String method = "toString"; 
Class<Obj> objClass = obj.getClass(); 
Method m = objClass.getMethod(method); 
m.invoke(obj); 

這是未經測試,但它應該工作。否則,只需在文檔中閱讀一下。

請注意,這通常(但並非總是)在Java中做錯事。

+3

+1「...經常以錯誤的方式在Java中做事」 – helpermethod 2010-08-05 11:26:24

+1

很高興你同意。根據我的經驗,特別是初學者和來自動態語言的人傾向於以不恰當的方式使用反射。 – musiKk 2010-08-05 13:36:53

相關問題