【发布时间】:2016-04-06 10:49:55
【问题描述】:
我有一个方法,它的参数是一个对象实例和一个表示方法名称的字符串,具有以下签名:
Object executeDynamicMethod(Object instance, String methodName);
我可以通过使用反射轻松地按名称执行方法,如下所示:
Method methodToExecute = instance.getClass().getMethod(methodName...);
methodToExecute.invoke(); ...
但是,当实例是代理实例并且方法通过调用处理程序运行时会发生什么?那么这里的 instance 对象类没有方法,我无法获取并调用它。 另外,我不想使用 Proxy.getInvocationHandler(instance) 因为有时实例是代理的,但有时不是,我不想用 if破坏它> 声明。
因此,有没有什么方法可以在实例上通过方法名调用方法,而不必先从类中检索方法? 谢谢。
【问题讨论】:
标签: java reflection proxy invoke dynamic-proxy