【发布时间】:2020-01-10 20:44:29
【问题描述】:
如何使用反射来区分类重载方法,例如:
method() 和method(int arg)
void invoke(Object object, String methodName, int id) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
object.getClass().getDeclaredMethod(methodName).invoke(object, int.class);
}
并调用此函数:
getV(new Object(), "method", 33);
它返回错误java.lang.IllegalArgumentException: wrong number of arguments,这意味着默认选择没有参数的方法。如果我在没有 int 参数的情况下调用该方法,它将起作用。请问如何区分重载方法的?我已经阅读了Class.getDeclaredMethodhttps://docs.oracle.com/javase/8/docs/api/java/lang/Class.html 的文档还有关于 SO 的旧帖子,但两个来源都没有回答同一个问题
How to find an overloaded method in Java?。当然 Class.Object 没有带有名称方法的方法,我只是将它用于示例。
【问题讨论】:
-
@Holger 你没看到 int.class 那里吗?我选择带有 1 个参数的方法。
-
@Holger 我明白了:)谢谢!
标签: java reflection