Anonyme Klasse und lokale Variable

marvsan

Neues Mitglied
Hallo zusammen,

ich finde auf die nachfolgende Frage keine passende Antwort:

Sie nutzen in einer Methode aufgabe01() eine anonyme Klasse.
Auf welche lokalen Variablen der Methode aufgabe 01() können Sie in dieser anonymen Klasse zugreifen?

Vielen Dank schonmal an alle Helfer. 🙂
 
Das könnte man ja leicht ausprobieren:
Java:
public class AnonymousTest {

	public static void main(String[] args) {
		
	}
	
	void aufgabe01(){
		String a = "test";
		
		new AnonymousTest(){
			public void test(){
				System.out.println(a);
			}
		};
		
	}

}

Das läuft sauber durch. Jetzt könnte man evtl. auf die Idee kommen, dass eine anonyme Klase Zugriff auf "normale" Variablen der äußeren Methode hat. Wenn man den String a allerdings später noch verändern möchte, also zB:

Java:
public class AnonymousTest {

	public static void main(String[] args) {
		
	}
	
	void aufgabe01(){
		String a = "test";
		
		new AnonymousTest(){
			public void test(){
				System.out.println(a);
			}
		};
		a="test2";
	}

}

Dann wird der Compiler meckern:
Local variable a defined in an enclosing scope must be final or effectively final

Eine anonyme Klasse kann also nur auf final Variablen der äußeren Methode zugreifen. Im ersten Fall erkennt der Compiler wohl, dass der String nicht mehr verändert wird und macht ihn automatisch final oÄ.

Auch hier nachzulesen:
Rheinwerk Computing :: Java ist auch eine Insel - 7 Äußere.innere Klassen
 
Zuletzt bearbeitet:

Zurück
Oben