如果我有两个变量:
Object obj;
String methodName = "getName";
在不知道obj
的类的情况下,我如何调用由methodName
标识的方法呢?
被调用的方法没有参数,返回值为String
.是a getter for a Java bean.
如果我有两个变量:
Object obj;
String methodName = "getName";
在不知道obj
的类的情况下,我如何调用由methodName
标识的方法呢?
被调用的方法没有参数,返回值为String
.是a getter for a Java bean.
从臀部开始编码,应该是这样的:
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个