【发布时间】:2014-05-20 16:53:06
【问题描述】:
我的代码如下所示:
class MyObject {
MyField f = new MyField();
}
class MyField {
public void greatMethod();
}
有没有办法使用 MyObject 类的对象上的反射来调用 greatMethod()?
我尝试了以下方法:
Field f = myObject.getClass().getDeclaredField("f");
Method myMethod = f.getDeclaringClass().getDeclaredMethod("greatMethod", new Class[]{});
myMethod.invoke(f);
但相反,它试图直接在 myObject 上调用 greatMethod(),而不是在其中的字段 f 上调用。有没有办法在不需要修改 MyObject 类的情况下实现这一点(这样它就可以实现一个调用 f 上适当方法的方法)。
【问题讨论】:
-
通过调用 getDeclaringClass 你得到了 MyObject 类,所以很清楚它为什么在 MyObject 中搜索方法。
标签: java reflection methods invoke