2014-03-13 13 views
0

我在我的應用程序中使用TTS。我想要運行一個方法的時候,我要求它。我創建了一個Hashtable,我想存儲喜歡我的方法:作爲值的哈希表的可執行方法

table.put("qqq", say("www")); 

我的鑰匙比較我的數據 - 它的工作原理,但它不會觸發的方法。

這恐怕是不可能的Hashtable,所以請告訴我怎麼做我想做的事,最簡單的方法

+2

您可以存儲實例或類型,例如具有'say'方法的接口實例。尋找「Java中的命令模式」或類似的東西。 –

+1

[如何調用存儲在HashMap中的方法? (Java)](http://stackoverflow.com/questions/4480334/how-to-call-a-method-stored-in-a-hashmap-java) – ugo

回答

0

也許它更是一個設計問題。

解決方案可能是:如果你只使用say()方法,然後存儲只是你會傳遞給say()方法的參數(例如,table.put("qqq", "www");)。而當你需要找到特定的短語時,請致電say(table.get("qqq"));

+0

我不只使用這種方法...我有〜50種不同的方法; / – Lau

1

你應該保存它調用該方法的Object

Hashtable<String, MyObject> objects = new Hashtable<String, MyObject>(); 
objects.put("qqq",new MyObject()); 

MyObject test = objects.get("qqq"); 
test.say("www"); 
0

退房java.lang.reflect,可能是你的情況下使用了正確的事情。 與反思,你可以做這樣的事情:

Method method = myObject.getClass().getMethod("say", String.class); 
method.invoke(myObject, "www"); 

因此,所有你需要做的是存儲對象,方法名和參數,然後您可以動態調用該方法。