52ky 发表于 2022-5-3 11:52:10

当方法名称以字符串形式给出,如何调用 Java 方法?

问题
如果我有两个变量:
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 反射



页: [1]
查看完整版本: 当方法名称以字符串形式给出,如何调用 Java 方法?