Hierarchie und Subtypen
Eine ResolvedClass kennt jeden Obertyp, jeden gegen den Ausgangstyp aufgelöst. Darauf steht alles, was geerbt wird.
Der Typ, seine Interfaces, dann aufwärts
hierarchy beginnt mit dem Typ selbst, dann seinen Interfaces, dann der Oberklasse mit ihren Interfaces, bis ausschließlich Object.
Repository erscheint als Repository<User>, nicht als Repository<E>. Jedes Member, das über diesen Eintrag gefunden wird, ist entsprechend typisiert.
Subtypen mit Generics
<:< vergleicht vollständige Typen, nicht nur Rohklassen. Primitive Typen werden zuerst gewrappt; int und Integer verhalten sich gleich.
Was die Hierarchie speist
Vier Sammlungen laufen durch die Hierarchie; ihre declared-Gegenstücke bleiben bei der Klasse selbst.
- fields · declaredFields
- Alle sichtbaren Felder, verdeckte entfernt · die eigenen der Klasse.
- methods · declaredMethods
- Alle Methoden, überschriebene entfernt · die eigenen der Klasse.
- constructors · declaredConstructors
- Konstruktoren jeder Klasse der Hierarchie · die eigenen der Klasse.
- annotations · declaredAnnotations
- Annotationen jedes Obertyps · die eigenen der Klasse.
constructors enthält die Konstruktoren der Oberklassen, die die Unterklasse nicht erzeugen können. Nimm declaredConstructors oder findConstructor, um Instanzen zu erzeugen.