Anonyme Klassen
Um die Sache auf die Spitze zu treibe, gibt’s in Java noch die anonymen (inneren) Klassen. Diese kleinen Klassen werden meist im Zusammenhang mit Listenern „on the fly“ definiert, wenn sie gebraucht werden, und auch sofort instanziert, ohne dass eine Referenz auf sie gehalten wird. Daher sieht die Syntax etwas merkwürdig aus:
Vielleicht erinnern Sie sich, dass wir bei dem Beispiel zu Schleifen ein String – Array erzeugt haben mit:
String[]names=new String[] {"Ole","Bosse","Lasse","Kerstin"};
Etwas ähnliches passiert hier auch: wir erzeugen ein WindowAdapter– Objekt mit new WindowAdapter() und überschreiben dabei dieMethode „windowClosing(..)“ nach unseren Bedürfnissen. Wir definieren dadurch eine von WindowAdapter abgeleitete Klasse, allerdings hat die keine Bezeichnung, ist also anonym. Da wir sie nicht als sich selbst behandeln können, behandeln wir sie wie ihre Elternklasse „WindowAdapter“, denn jede abgeleitete Klasse hat ja alle Merkmale und Eigenschaften ihrer Elternklasse.
Der Compiler erzeugt daraus „ClosableFrame8$1.class“, da er dem Kind irgend einen Namen geben muss. Man sieht also, dass es sich um eine vollwertige Klasse handelt.
Anonyme Klasse werden vor allem bei der Implementierung einfacher Interfaces oder abstrakter Klassen verwendet und sind dabei ein übliches Verfahren. Ebenso wie die abstrakte Klasse WindowAdapter können Sie auch das Interface „ActionListener“ als anonyme Klasse einfach implementieren:
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// do something
}
});