如果我有两个变量:
Object obj;
String methodName = "getName";
在不知道obj
的类的情况下,如何调用上面methodName
标识的方法?
被调用的方法没有参数,有一个String
返回值。它是 Java bean 的 setter/getter 。
最佳答案
从头开始编码,类似于:
java.lang.reflect.Method method;
try {
method = obj.getClass().getMethod(methodName, param1.class, param2.class, ..);
} catch (SecurityException e) { ... }
catch (NoSuchMethodException e) { ... }
参数标识你需要的非常具体的方法(如果有几个重载可用,如果方法没有参数,只给出methodName
)。
然后你通过调用来调用该方法
try {
method.invoke(obj, arg1, arg2,...);
} catch (IllegalArgumentException e) { ... }
catch (IllegalAccessException e) { ... }
catch (InvocationTargetException e) { ... }
同样,如果您没有任何参数,请忽略 .invoke
中的参数。但是,是的。阅读 Java Reflection
关于java - 将方法名称作为字符串给出时,如何调用 Java 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/160970/