Wie bekomme ich generische Informationen von getAnnotatedParameterTypes () in Java 8?

8

Es scheint, als ob getAnnotatedParameterTypes() ein Array von AnnotatedType s zurückgibt, das rohe und nicht generische Typen enthält. Zum Beispiel:

%Vor%

Was ist der Grund für die Unstimmigkeit mit getGenericParameterTypes() ?

    
Tavian Barnes 12.04.2014, 02:22
quelle

1 Antwort

7

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 diesem Executable .

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.

    
Sotirios Delimanolis 14.04.2014, 17:51
quelle