Страницы

Поиск по вопросам

воскресенье, 9 июня 2019 г.

Java. Доступ к полю родительского класса из метода внутреннего класса

Вопрос не несет практической значимости, но очень интересен в плане понимания языка.
public class A { private class B {} private String myFinalNameField;
private B b = new B() { private void myMethod(String myFinalNameFields) { [???]myFinalNameFields = myFinalNameFields; } }; }
Как присвоить полю myFinalNameField класса А значение параметра myFinalNameFields метода myMethod класса B ? Скорее всего я неверно сформулировал вопрос, это можно сделать, добавив например префикс:
public class A { private class B {} private String prefixMyFinalNameField;
private B b = new B() { private void myMethod(String myFinalNameFields) { prefixMyFinalNameField = myFinalNameFields; } };
Есть ли возможность обратиться к приватному не статичному полю внешнего класса, что то вроде как this или super. Т.е. иметь абсолютно идентичные имена полей, но различать какая переменная к какому классу относится, точнее выполнить присвоение.


Ответ

Если я правильно понял суть вопроса, то к этой переменной вы можете обратиться следующим образом:
A.this.myFinalNameFields = myFinalNameFields;
Немного поясню:
class A {
private class B {}
private String myFinalNameFields;
private B b = new B() {
private String myFinalNameFields;
private void myMethod(String myFinalNameFields) { A.this.myFinalNameFields = myFinalNameFields; //Присвоит значение полю класса A this.myFinalNameFields = myFinalNameFields; //Присвоит значение полю класса B } }; }

Комментариев нет:

Отправить комментарий