2015-08-05 6 views
0

Например, если A имеет внутренний класс B, B имеет внутренний класс C, все имеют свойство «имя», я знаю, что C может получить доступ к имени в B по B.this.name, но как получить доступ к имени в A из C ?Как получить доступ к внешнему внешнему классу (не внешнему классу)?

public class A{ 
    String name="A"; 
    public class B{ 
     String name="B"; 
     public class C{ 
      String name="C"; 
      public C(){ 
       //how to print name in A? 
       //System.out.println(B.A.name); 
       //System.out.println(B.A.this.name); 
       //System.out.println(B.this.A.name); 
       //System.out.println(B.this.A.this.name); 
      } 
     } 
     C c=new C(); 
    } 
    B b=new B(); 
    public static void main(String[] args){ 
     new A(); 
    } 
} 

Я попытался так много синтаксиса, но они не могут компилировать, а также при поиске Java внешний класс, я обнаружил, большинство из них о внешнем классе только, а не внешний внешний класс.

+1

Почему вы создаете эти много сложностей какую-либо конкретную причину? –

+0

Передать конструктор «A» в «B» и передать «B» в конструктор «C», если вам действительно нужны эти вложенные классы –

+0

@DiSaSteR, здесь нет наследования. 'super()' будет вызывать конструктор класса 'Object'. – Codebender

ответ

1

Используйте A.this.name для доступа к внешнему большинству классов. Или любой другой класс.

1

Использование System.out.println(A.this.name);

Смежные вопросы