我想将函数存储为我的Android设备的HashTable中的值。这可能吗?
答案 0 :(得分:2)
是的,你可以使用所谓的Reflection来做到这一点。你会创建一些HashTable,如下所示:
HashTable<String, Method> functionsMap = new HashTable<String, Method>;
以下是有关Method课程的更多信息。
那就是说,反思通常是一个坏主意。当你觉得有必要使用Reflection时,你应该问自己,“我真的需要以这种方式做事吗?有什么方法可以完成我想用反射做的事情吗?”。如果经过几分钟的努力思考后,问题的答案仍然是“是的,我需要反思”,然后继续使用它。
答案 1 :(得分:0)
不,java不允许这样做。你可以做的是创建某种接口,允许你提供特定方法的自定义实现。
例如
public interface CustomerHandler{
public void handle();
}
然后您可以创建此接口的自定义实现并将这些对象添加到hashmap。然后你可以检索对象并调用方法。
HashMap<String, CustomHandler> map = new HashMap<String, CustomHandler>();
//add objects
map.get("some_handler").handle();
答案 2 :(得分:0)
从Java7开始,您可以创建MethodHandles来表示函数(方法)。 当然,你可以将它们存储在任何地方,包括Hashtables。