如果我有两个变量:
Object obj; String methodName = "getName";
在不知道的类的情况下obj,如何调用由其标识的方法methodName?
被调用的方法没有参数,并且有String返回值。
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如果没有,请忽略中的参数。