Frage zu anonymen Klassen

Werniman

Mitglied
Hallo,
ich bin zur Zeit dabei, den Videokurs "Java leicht gemacht - Der umfassende Java Einsteigerkurs A-Z" nachzubauen und stehe gerade bei den anyonmen Klassen. ein wenig auf dem Schlauch. Laut Video leihen sich anonyme Klassen den Namen von einer anderen Klasse oder einem Interface.

Bisher haben wir ja ein Objekt immer so angelegt:
Person p1 = new Person("Ralf");

Und bei den anonymen Klassen steht plötzlich folgendes:
Code:
        new Person("Olaf") {

            @Override
            public void printName() {
                System.out.println("Der Name: " + this.getName());
            }
        };


Wenn ich das bisher richtig verstanden habe, muss doch aber jedes angelegte Objekt irgendwohin referenziert werden (d.h. p1 verweist auf das Objekt Ralf). Fehlt diese Verknüpfung, ist das Objekt Ralf nutzlos und wird vom Garbage Collector entsorgt. Wieso wird dann plötzlich bei den anonymen Klassen ein Objekt "Olaf" ohne eine solche Referenz erstellt ? Würde das nicht gleich vom GC wieder entsorgt ?
 
Würde das nicht gleich vom GC wieder entsorgt ?
Soweit ich mich entsinne gibt es keine Garantie, wann der GC was entsorgt. Das spielt hier aber m.E. auch nicht die tragende Rolle. Viel wichtiger: ein Objekt, das nicht erreichbar ist, ist unnütz. Es gibt allerdings auch "Spezialisten", die den Konstruktor als Methodenersatz verwenden, d. h. das Objekt wird nur erzeugt, um Arbeit auszuführen, die in einer Methode steckt bzw. stecken würde.
 
Ich vermute mal ganz stark das soll nur das Erzeugen zeigen, denk die das Speichern der Referenz dazu, also

Java:
Person p = new Person("Olaf") {


            @Override

            public void printName() {

                System.out.println("Der Name: " + this.getName());

            }

        };
 

Zurück
Oben