找回密码
 立即注册
问题
如果我有两个变量:
  1. Object obj;
  2. String methodName = "getName";
复制代码

如何在不知道 obj 类的情况下调用由 methodName 标识的方法?

被调用的方法没有参数并返回一个 String 。它是 Java bean 的吸气剂。

回答
粗略地从臀部编码:
  1. java.lang.reflect.Method method;
  2. try {
  3.   method = obj.getClass().getMethod(methodName, param1.class, param2.class, ..);
  4. } catch (SecurityException e) { ... }
  5.   catch (NoSuchMethodException e) { ... }
复制代码

该参数标识了您需要的非常具体的方法(如果有多个重载可用,如果该方法没有参数,则只给出 methodName)。

然后通过调用
  1. try {
  2.   method.invoke(obj, arg1, arg2,...);
  3. } catch (IllegalArgumentException e) { ... }
  4.   catch (IllegalAccessException e) { ... }
  5.   catch (InvocationTargetException e) { ... }
复制代码

同样,如果没有参数,请省略 .invoke 中的参数。但是,是的。了解 Java 反射





上一篇:如何设置一些 Tkinter 小部件的边框颜色?
下一篇:递归删除,但排除特定目录树