我创建了一个哈希表,它将一个字符串保存为一个字符串,表示用户将给出的方法的名称,并将实际的方法调用值作为字符串保存为字符串。我正在使用的代码是:
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();没有执行。有人能帮帮我吗?
答案 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是实际对象。