Was sind anonyme Klassen?
Sie werden mit dem new
-Operator an der Stelle im
Quelltext initialisiert, an der sie Verwendung finden. Somit stehen
sie für gewöhnlich selbst an Stellen, an denen sonst ein
Referenzwert erwartet würde.
Sie werden gerne dort verwendet
wo on the fly eine einmalige Objektbildung benötigt
wird. Dies ist beispielsweise in GUIs bei EventListenern oder
einfachen Threads der Fall.
Anonyme Klassen erweitern
existierende Klassen oder implementieren Interfaces ohne extends
zu verwenden. Werden bei der Erzeugung Parameter übergeben, so
muss die Superklasse den passenden Konstruktor besitzen. Die anonyme
Klasse selbst deklariert keinen Konstuktor.
public class AnonymousClassBsp {
public static void main(String[] args) {
new Person("Meier") {
void printName() {
System.out.println("Mein Name ist: " + this.getName());
}
};
}
}
class Person {
private String name;
public Person(String name) {
this.name = name;
printName();
}
void printName() {
System.out.println(name);
}
String getName() {
return name;
}
}
Im Beispiel wird in der main
-Methode eine anonyme
Klasse vom Typ Person
erzeugt. Dem Konstruktor wird ein
String übergeben und in ihrem Körper die Methode printName()
überschrieben. Sie gibt in der Superklasse den Wert der
Variablen name
auf der Konsole aus. In der
überschriebenen Version der anonymen Klasse wird dieser String
etwas erweitert und die Methode getName()
der
Superklasse aufgerufen.
Oft werden auch Interfaces in anonymen Klassen implementiert. Das
gängigste Beispiel hierfür stellt sicherlich die Ereignisbehandlung durch
das Interface ActionListener
dar, mit dem z.B. das Eventhandling von
Buttons realisiert wird.
Seit Java 8.0 wird dies zudem durch
Lambda Ausdrücke noch erheblich
übersichtlicher.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.