问题
如果我有两个变量:
- Object obj;
- String methodName = "getName";
复制代码
如何在不知道 obj 类的情况下调用由 methodName 标识的方法?
被调用的方法没有参数并返回一个 String 。它是 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 反射
|