Вопрос не несет практической значимости, но очень интересен в плане понимания языка.
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
}
};
}
Комментариев нет:
Отправить комментарий