Rekursiv beschränkter parametrischer Polymorphismus
Eine interessante Spielart aus dem Bereich des parametrischen Polymorphismus ist der sog. rekursiv beschränkte parametrische Polymorphismus.
Dabei handelt es sich um Typen, die sich in ihrer Definition selbst referenzieren, z.B.:Java
Die abstrakte Klasse Equatable definiert einen Typparameter T, der von dem Typ nach oben begrenzt wird. T muss also als Subtyp von Equatable instanziiert werden. Eine die Klasse Equatable erweiternde Klasse A, die den Typparameter T mit sich selbst instanziiert, erfüllt also die obige Bedingung. Besitzt Equatable generische Methoden, die den Typparameter T z.B. als Argumenttyp verwenden, wird für jede konkrete Subklasse eine subklassenspezifische Methodensignatur erzeugt:
Java
Equatable ist also ein generischer Typ, der einen Typparameter definiert, der nur Subtyp von ihm selbst sein kann. Seine Subklassen können dann Methoden erben, die für ihre Methodenparameter oder Rückgabewerte nur genau diesen Subtyp selbst zulassen. Ein prominenter Vertreter dieses generischen Typs ist:
Java
Seine Methode public final int compareTo(E o) { ... } vergleicht somit immer Objekte (genauer: Aufzählungen, Enums) des gleichen Typs. Rekursive Typen werden bei der Realisierung von dynamische Strukturen wie z.B. verzeigerte Listen oder Bäume verwendet.