我正在尝试使用反射机制调用一个在运行时已知名称和参数的方法,但是遇到了IllegalAccessException
的问题。
这个对象是非公共类的实例,它实现了一个公共接口。我忘记了如何正确地调用这样的方法。
public interface Foo
{
public int getFooValue();
}
class FooImpl implements Foo
{
@Override public int getFooValue() { return 42; }
}
Object foo = new FooImpl();
给定对象 foo
,我如何使用反射调用 foo.getFooValue()
?
如果我查看 foo.getClass().getMethods()
的结果,这应该可以工作,但我认为它会导致 IllegalAccessException
异常。这是一个必须调用 getDeclaredMethods()
的情况吗?还是我必须遍历公共接口/超类并在那里调用 getDeclaredMethods
?