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

Java 将方法的名称用于哈希表值?,java,methods,hashtable,Java,Methods,Hashtable,我创建了一个哈希表,它将保留一个字符串作为键,该字符串表示用户将给出的方法的名称,并将实际的方法调用作为值,也作为字符串。我使用的代码如下所示: public void getMethod(String givenMethod){ Map<String, String> methods = new HashMap<String, String>(); methods.put("length", "length();"); methods.get

我创建了一个哈希表,它将保留一个字符串作为键,该字符串表示用户将给出的方法的名称,并将实际的方法调用作为值,也作为字符串。我使用的代码如下所示:

public void getMethod(String givenMethod){

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

    methods.get(givenMethod);

}
public void getMethod(String givenMethod){
Map methods=newhashmap();
方法。放入(“长度”、“长度();”);
方法:获取(给定方法);
}

从我调用objectX.getMethod(“length”);的主方法;,但是方法长度();没有执行。有人能帮我吗?

您需要使用反射按名称调用方法。因此,您的数据结构看起来更像

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

其中是一个实际对象。

您正在获取该方法,但没有调用它。您必须执行以下操作:

Method yourMethod = objectX.getClass().getDeclaredMethod("yourMethodName"); //This is the string that represents the name of the method.
然后调用该方法。所有这些都是通过反思:

yourMethod.invoke(YourObject);
invoke方法的参数首先是对象,然后是属性

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

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

使用Java**反射按名称调用方法
(正如您所说,您正在将方法名称存储在映射中)。
有关更多详细信息,请阅读以下文章:

是什么让你认为将一个方法名转换成一个字符串,添加parantises,然后通过从映射中获取该字符串来访问该字符串会导致该方法的执行?您想要实现什么?您需要使用Java的反射API。也许您应该给出一个使用示例。