通过String调用方法

时间:2014-06-04 05:22:53

标签: java

我想通过使用字符串来调用方法。我知道这是可能的;从我的理解,反思是要走的路。但是,我很难让它工作,这就是我想要的。

例如:

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?

1 个答案:

答案 0 :(得分:5)

Object retObject = myMethod.invoke(null);

这只适用于静态方法。

对于实例方法,您需要传入要在其上调用方法的实例。

Object retObject = myMethod.invoke(instanceOfFoo);

此外,该方法可能需要public(或单独访问)。