Я пытаюсь использовать отражение, чтобы вызвать метод, имя и аргументы которого известны во время выполнения, и у меня не получается с 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
?