2010-05-11 7 views
98

Я реализовал вложенный в Java класс, и мне нужно вызвать метод внешнего класса из внутреннего класса.Вызов внешней функции класса из внутреннего класса

class Outer { 
    void show() { 
     System.out.println("outter show"); 
    } 

    class Inner{ 
     void show() { 
      System.out.println("inner show"); 
     } 
    } 
} 

Как я могу назвать Outer метод show?

+0

Можно ли считать, что ваш внутренний класс содержит экземпляр внешнего класса? – Eric

+12

@ Эрик: в java экземпляр нестатического внутреннего класса ALWAYS содержит экземпляр внешнего класса – newacct

+0

@ Эрик: это всегда верно в нестационарном внутреннем классе Java! –

ответ

174

Вы должны предварить вызов внешнего класса:

Outer.this.show(); 
+3

Отлично. У меня есть продолжение этого. Как вызвать метод во внешнем классе из совершенно другого места, имея экземпляр внутреннего класса. Внутренний myInner = новый Outer(). New Inner(); ... например, если внешний класс имеет открытый метод getValue(). myInner.getValue() не работает, myInner.Outer.getValue() тоже не работает. Я знаю, что могу сделать это, получив метод getOwner во Внутреннем, а затем позвонил ему ... но мне нужен этот метод? спасибо – momomo

+0

Если внешний интерфейс, то как назвать абстрактный метод из внутреннего класса ..? –

1

Это должно сделать трюк:

Outer.Inner obj = new Outer().new Inner(); 
obj.show(); 
Смежные вопросы