【问题标题】:Executable method into hashtable as value将可执行方法放入哈希表作为值
【发布时间】:2014-03-13 17:53:11
【问题描述】:

我在我的应用中使用 TTS。当我要求时,我想运行一个方法。我创建了一个Hashtable,我想在其中存储我的方法,例如:

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

我正在将我的数据与键进行比较 - 它可以工作,但不会触发方法。

Hashtable 可能无法做到这一点,所以请告诉我如何以最简单的方式做我想做的事

【问题讨论】:

标签: android methods hashtable text-to-speech


【解决方案1】:

您应该保存调用该方法的Object

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

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

【讨论】:

    【解决方案2】:

    查看java.lang.reflect,可能适合您的情况。 通过反射,您可以执行以下操作:

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

    所以您需要做的就是存储对象、方法名称和参数,然后您就可以动态调用该方法。

    【讨论】:

      【解决方案3】:

      可能更多的是设计问题。

      解决方案可能是:如果您只使用say() 方法,则只存储您将传递给say() 方法的参数(例如,table.put("qqq", "www");)。当您需要找到特定的短语时,只需致电say(table.get("qqq"));

      【讨论】:

      • 我不只使用这种方法...我有大约 50 种不同的方法;/
      猜你喜欢
      • 1970-01-01
      • 2011-02-05
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 2012-05-23
      相关资源
      最近更新 更多