我想通过使用字符串来调用方法。我知道这是可能的;从我的理解,反思是要走的路。但是,我很难让它工作,这就是我想要的。
例如:
String method ="punch";
int punch(){
return 1;
}
我想通过字符串名称调用该方法。有人能告诉我一个例子吗?
public class foo {
String method ="punch";
int punch() {
return 1;
}
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Class<?> myClass = Class.forName("foo");
Method myMethod = myClass.getMethod("punch");
Object retObject = myMethod.invoke(null);
}
}
我需要做什么才能获得数字1?
答案 0 :(得分:5)
Object retObject = myMethod.invoke(null);
这只适用于静态方法。
对于实例方法,您需要传入要在其上调用方法的实例。
Object retObject = myMethod.invoke(instanceOfFoo);
此外,该方法可能需要public
(或单独访问)。