Was wäre die Verwendung von sich selbst als Typargumente in Generika zu akzeptieren

Ich habe Code zu einer nicht verwandten Frage gesehen, aber er hat mich neugierig gemacht, da ich nie ein solches Konstrukt mit Java Generics gesehen habe. Was wäre die Verwendung der Erstellung einer generischen Klasse, die als Typargument selbst oder als Nachkommen von sich selbst verwendet werden kann. Hier ist ein Beispiel:

abstract class A<E extends A<E>> {
    abstract void foo(E x);
}

Das erste, was mir in den Sinn kam, war eine Liste, die eine Liste als Parameter verwendet. Die Verwendung dieses Codes fühlt sich seltsam an. Wie deklariert man eine Variable vom Typ A? Rekursive Deklaration!?

Funktioniert das überhaupt? Wenn ja, hat jemand von euch das im Code gesehen? Wie wurde es benutzt?

BEARBEITEN

In der Tat stellt sich heraus, dass meine Frage die gleiche ist wiedieses nur anders formuliert, aber die Antworten auf diese Frage werden auch meine beantworten.

Danke auch für den Hinweis auf dieNeugierig wiederkehrendes Schablonenmuster Das gibt einige historische Hintergründe und weitere Erklärungen zu diesem Thema.

So altBlog-Eintrag gibt wahrscheinlich die beste Erklärung, die ich für uns Java-Leute gefunden habe.

Es ist jetzt schwierig, hier eine richtige Antwort zu finden, da sie alle hilfreich sind. Ich werde mich also für die Antwort entscheiden, die am Ende das meiste Lesematerial lieferte (siehe oben).

Antworten auf die Frage(2)

Ihre Antwort auf die Frage