7.4 Lokale Klassen
Lokale Klassen sind ebenfalls innere Klassen, die jedoch nicht einfach wie eine Eigenschaft im Rumpf einer Klasse, sondern direkt in Anweisungsblöcken von Methoden, Konstruktoren und Initialisierungsblöcken gesetzt werden. Lokale Schnittstellen sind nicht möglich.
Im folgenden Beispiel deklariert die main()-Methode eine innere Klasse mit einem Konstruktor, der auf die finale Variable j zugreift:
Listing 7.6: com/tutego/insel/inner/FunInside.java, FunInside
public class FunInside
{
public static void main( String[] args )
{
int i = 2;
final int j = 3;
class In
{
In() {
System.out.println( j );
// System.out.println( i ); //Compiler error because i is not final
}
}
new In();
}
}
Die Deklaration der inneren Klasse In wird hier wie eine Anweisung eingesetzt. Ein Sichtbarkeitsmodifizierer ist bei inneren lokalen Klassen ungültig, und die Klasse darf keine Klassenmethoden und allgemeinen statischen Variablen deklarieren (finale Konstanten schon).
Jede lokale Klasse kann auf Methoden der äußeren Klasse zugreifen und zusätzlich auf die lokalen Variablen und Parameter, die mit dem Modifizierer final als unveränderlich ausgezeichnet sind. Liegt die innere Klasse in einer statischen Methode, kann sie keine Objektmethoden der äußeren Klasse aufrufen.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.