用于哈希表值的方法名称?

时间:2012-05-10 19:58:16

标签: java methods hashtable

我创建了一个哈希表,它将一个字符串保存为一个字符串,表示用户将给出的方法的名称,并将实际的方法调用值作为字符串保存为字符串。我正在使用的代码是:

public void getMethod(String givenMethod){

    Map<String, String> methods = new HashMap<String, String>();
    methods.put("length", "length();");

    methods.get(givenMethod);

}

从main方法我调用objectX.getMethod(“length”);,但方法​​length();没有执行。有人能帮帮我吗?

3 个答案:

答案 0 :(得分:3)

您正在获取该方法,但您没有调用它。你必须做这样的事情:

Method yourMethod = objectX.getClass().getDeclaredMethod("yourMethodName"); //This is the string that represents the name of the method.

然后调用该方法。所有这一切都通过反思:

yourMethod.invoke(YourObject);

invoke方法的参数首先是对象,然后是属性。

您还可以获取方法的返回类型并转换结果,因为调用该方法将导致Object类型方法:

yourMethod.getReturnType(); //This line gives you the type returned by your method.

答案 1 :(得分:2)

使用Java **反射按名称调用方法
(正如您所说,您在地图中存储方法名称) 有关详细信息,请阅读以下文章 http://java.sun.com/developer/technicalArticles/ALT/Reflection/

答案 2 :(得分:1)

您需要使用反射按名称调用方法。所以你的数据结构看起来更像是

Map<String, Method> meth = new Hashmap<String,Method>();

其中Method是实际对象。