2012-02-13 28 views
1

說,我想我的用戶鍵入命令轉換成字符串:如何將字符串中的文本用作方法?

String command = scan.nextLine(); 

他們鍵入類似object.function()。我怎樣才能調用他們輸入的函數?

+0

您是否希望它們能夠調用任意函數(就好像它們正在輸入已編譯和運行的代碼一樣),還是隻能從預先指定的列表中調用?如果後者, – Kitsune 2012-02-13 01:32:59

+0

@Kitsune Code從一個預先指定的列表中,就像一個類的方法。 – VinylScratch 2012-02-13 01:34:35

回答

-1

如果else語句或(益)開關case語句我會使用的。由於編譯了java,所以不能只編寫代碼並讓java執行它。

例如:

Object duck = new Object(); 
String userInput = System.in.read(); 
if (userInput = "duck.quack();"){ 
//do something 
duck.quack(); 
} 
else if (userInput = "duck.fly();"){ 
//do something else 
duck.fly(); 
} 
//etc. 
  • 編輯添加的代碼示例
+1

實際上並非如此,通過一些機制。 – 2012-02-13 01:34:13

+0

@Muricula請參見['JavaCompiler'](http://docs.oracle.com/javase/7/docs/api/javax/tools/JavaCompiler.html)和['Runtime.exec'](http:// docs .oracle.com/javase/7/docs/api/java/lang/Runtime.html#exec(java.lang.String))/ ['URLClassLoader'](http://docs.oracle.com/javase/7 /docs/api/java/net/URLClassLoader.html)。 – Jeffrey 2012-02-13 01:34:50

+0

@Muricula這不是真的,他不是在尋找一個shell執行程序或類加載器。您可以通過反射名稱來識別和調用方法。 – Timeout 2012-02-13 01:37:25

1

如果函數代碼中的某處,然後用這個:

ActivateUserDefAction.class.getMethod("method", null).invoke(this, null); 
相關問題