Java: вызов метода внешнего classа в анонимном внутреннем classе

Недавно я столкнулся с загадочной проблемой в проекте Android, который я описал здесь . Я как-то решил проблему, но до сих пор не знаю точной причины этого.

Предположим, я хочу вызвать функцию foo () во внутреннем classе. Вопрос в том, в чем разница между прямым вызовом

foo(); 

или вызов его с помощью экземпляра внешнего classа

 OuterClass.this.foo(); 

Кроме того, я буду признателен, если кто-нибудь сможет проверить мой последний вопрос, связанный с этим, и дайте мне понять, почему возникает ошибка. Большое спасибо.

PS: Я где-то читал, что нестатический внутренний class всегда будет содержать экземпляр внешнего classа. Таким образом, он будет вызывать внешнюю функцию, используя этот экземпляр, если я использую только foo ()?

Последнее более явное и позволит вам вызвать метод внешнего classа, если он существует во внутреннем classе с тем же именем.

 class OuterClass { void foo() { System.out.println("Outer foo"); } View.OnClickListener mListener1 = new View.OnClickListener() { void foo() { System.out.println("Inner foo"); } @Override public void onClick(View view) { foo(); //Calls inner foo OuterClass.this.foo(); //Calls outer foo } } View.OnClickListener mListener2 = new View.OnClickListener() { @Override public void onClick(View view) { foo(); //Calls outer foo OuterClass.this.foo(); //Calls outer foo } } } 
  • Recyclerview не вызывать onCreateViewHolder
  • Правильный способ добавления внешних банок (lib / *. Jar) в проект IntelliJ IDEA
  • java, расширяющий class с конструктором основного classа имеет параметр
  • Android: java.lang.OutOfMemoryError:
  • Вопрос о блокировке Java
  • Как получить часть после десятичной точки в Java?
  • Как нарисовать круг внутри круга с помощью форм xml?
  • Почему BitmapFactory.decodeByteArray возвращает значение null?
  • Чтобы использовать строковое значение в качестве имени переменной
  • Пользовательский макет для DialogFragment OnCreateView и OnCreateDialog
  • Какая версия JDK (уровень языка) требуется для Android Studio?
  • Давайте будем гением компьютера.