如果我有两个变量:
Object obj; String methodName = "getName";
在不知道 的类的情况下obj,如何调用 on 标识的方法methodName?
obj
methodName
被调用的方法没有参数和String返回值。它 是 Java bean 的吸气剂 。
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如果您没有任何参数,请忽略 中的参数。但是,是的。阅读Java 反射
.invoke