Я знаю различия между статическим вложенным классом и внутренним классом в Java. Я говорю о внутреннем классе. Я также знаю, что мы можем использовать «OuterClass.this», чтобы получить внешний класс из внутреннего класса.Java: Как получить непосредственного родителя (который не является классом верхнего уровня) из внутреннего класса?
Как и в каталоге, существует два способа навигации: абсолютный и относительный. Например: «/ aaa/bbb/ccc/ddd», если я внутри папки «ccc» и хочу ссылаться на «bbb», мы можем: «cd/aaa/bbb» или «cd ..» ,
Теперь идет к внутренним классам Java.
class AAA{
BBB b = new BBB();
class BBB{
CCC c = new CCC();
//CCC c = new CCC(b);
class CCC{
//SECOND VERSION
//BBB parent = null
//CCC(BBB parent_){
// parent = parent_;
//}
DDD d = new DDD();
BBB GetParent(){
return AAA.this.b; //I know this will work
//or return parent; if using the SECOND VERSION
}
class DDD{
}
}
}
}
я предоставил две версии: AAA.this.b и ввести переменную-член «родительский», назначенный со значением параметра из конструктора.
Мой вопрос: Если я не вводим переменную-член, могу ли я использовать относительный способ получения ее непосредственного родителя из внутреннего класса? (например, cd ..)
Как AAA.this.b является «родителем»? Непонятно, о чем вы просите? Обе версии возвращают произвольный экземпляр класса BBB, а не тот, который содержит объект DDD с методом GetParent. Так что, похоже, третья версия будет «возвращать новый BBB();' – emory
Спасибо. Но я не могу согласиться. Я думал, что этот сценарий ясен. Если у вас есть экземпляр AAA, скажите «a», тогда у вас будут: a, a.b, a.b.c, a.b.c.d; У вас будет 4 экземпляра, собранных во вложенном порядке. – milesma
Не работает ли BBB.this? – flup