2009-09-25 12 views

Odpowiedz

13

Możesz odwołać się do zewnętrznej z OuterClass.this, lub wywołać metodę z OuterClass.this.method().

Jednak, jako punkt projektu, udostępnianie nazwy jest co najmniej mylące. Może być rozsądne, jeśli klasa wewnętrzna reprezentuje rozszerzenie lub, powiedzmy, konkretną implementację abstrakcyjnej metody, ale byłoby to wyraźniejsze przez wywołanie super.method. Wywołanie super metody bezpośrednio, (jak to się wydaje, że masz zamiar to zrobić?), Jest mylące.

+0

+1 za "nie musisz tak nazywać w ten sposób, prawda?" –

6

Zakres go do zewnętrznej klasy z OuterClass.this.someMethod():

public class OuterClass { 

    public class InnerClass { 

    public void someMethod(int x) { 
     OuterClass.this.someMethod(x); 
    } 
    } 

    public void someMethod(int x) { 
    System.out.println(x); 
    } 
} 
+0

Aw ... Steve B. wysłał tę samą odpowiedź tuż przede mną. Zostawię tutaj swój kod przykładowy. – SingleShot

1

Zmiana nazwy dwuznaczność jest dobrą praktyką. Zwłaszcza jeśli zastosujesz go w architekturze do góry i do tyłu.

+1

To nie zadziała, jeśli klasa implementuje interfejs. –

Powiązane problemy