Es scheint, als ob getAnnotatedParameterTypes()
ein Array von AnnotatedType
s zurückgibt, das rohe und nicht generische Typen enthält. Zum Beispiel:
Was ist der Grund für die Unstimmigkeit mit getGenericParameterTypes()
?
Es gibt einen Fehlerbericht über das ist , und es wurde seitdem behoben.
Es gibt einen Unterschied zwischen Method#getGenericParameterTypes()
und Method#getAnnotatedParameterTypes()
.
Erstere gibt Garantien über die zurückgegebenen Typen
Wenn ein formaler Parametertyp ein parametrisierter Typ ist, das Type-Objekt zurückgegeben für es muss die tatsächlichen Typparameter genau widerspiegeln im Quellcode verwendet.
Wenn ein formaler Parametertyp eine Typvariable oder ein parametrisierter Typ ist, es ist erstellt. Andernfalls ist es gelöst.
während letzteres nicht, zumindest nicht klar:
Gibt ein Array von
AnnotatedType
-Objekten zurück, die die Verwendung von darstellen Typen, um formale Parametertypen der Methode / des Konstruktors anzugeben dargestellt von diesemExecutable
.
Wir müssen davon ausgehen, dass getAnnotatedParameterTypes()
gibt die gelöschten Typen zurück (obwohl dies möglicherweise nicht so beabsichtigt war). Die unbegrenzte Typvariable T
wird in Object
gelöscht. Wenn Sie <T extends Foo>
hätten, würde es in Foo
gelöscht werden.
Wie für die Kommentare, über die Anmerkung von einem Typ Argument in einem Methodenparameter bekommen, gibt es keine Möglichkeit, die oben angegeben sind. Man könnte denken, dass es so funktioniert wie für Felder.
%Vor%welches druckt
%Vor%Ich denke sehr, dass es sich um einen Bug handelt, der repariert werden muss und wird dem oben verlinkten Fehlerbericht folgen.
Tags und Links java java-8 reflection generics type-annotation