Если я создаю анонимный класс с помощью частного метода и попытаюсь получить доступ к методу с использованием отражения, он выкинет исключение IllegalAccessException. Однако, если я вызываю метод объекта перед сохранением его в переменной, она отлично работает:Анонимные классы, частные методы и отражение
public class Z {
public static void main(String[] args) throws Exception {
Object obj = new Object(){private void foo(){}};
obj.getClass().getDeclaredMethod("foo").invoke(obj); // throws IllegalAccessException
new Object(){private void foo(){}}.foo(); // works
}
}
Что причиной разницы?