Hallo Linda,
die häufigste Verwendung für anonyme Klassen wurde ja bereits erwähnt, jetzt zu deinen eigentlichen Fragen:
was unterscheidet eigentlich eine anonyme klasse von einer "normalen" klasse
Anonyme Klassen sind lokale innere Klassen, die keinen Namen haben und genau einmal instanziiert werden.
Als innere Klassen bezeichnet man alle Klassen, die innerhalb eines anderen class-Blocks definiert werden. Man unterscheidet einige Unterarten, je nachdem, in welcher Beziehung die innere zur umgebenden Klasse steht.
Wie für "normale" Klassen wird auch für jede innere Klasse beim Compilieren eine eigene class-Datei erzeugt.
Lokale Klassen stellen eine Unterart innerer Klassen dar. Man kann lokale Klassen innerhalb beliebiger Codeblöcke definieren, also auch innerhalb eines Methodenrumpfes. Eine lokale Klasse kann nur innerhalb des Codeblocks verwendet werden, in dem sie definiert wurde. Sie kann auf alle Variablen und Methoden der umgebenden Klasse zugreifen (auch solche, die als "private" deklariert sind).
Anonyme Klassen können auch innerhalb beliebiger Codeblöcke definiert werden. Anders als normale lokale Klassen haben sie keinen Namen, können also nur ein einziges Mal instanziiert werden - an Ort und Stelle ihrer Definition. Man kann für anonyme Klassen auch keine Konstruktoren definieren.
Die beim Compilieren erzeugten zugehörigen class-Dateien werden mangels Namen einfach durchnumeriert.
und wo für benötige ich anonyme klassen?
Anonyme Klassen können nichts, was normale lokale Klassen nicht auch könnten, insofern benötigt man sie nicht unbedingt. Ihr Einsatz bietet sich aber an, wenn man eine Klasse nur einmal an einer Stelle im Code benötigt - man muss sich nicht extra einen Namen dafür ausdenken und die Schreibweise ist sehr kompakt.
Hoffe zur Aufklärung beigetragen zu haben...
Weihnachtliche Grüße!
Tom