2016-05-19 16 views
0

Von ExecutableType können wir die Parametertypen mit getParameterTypes() überprüfen. Ich kann jedoch keinen Mechanismus zur Überprüfung der Parameternamen finden.Überprüfen der Parameternamen vom Annotation Processor

Ich verstehe, dass in < = Java 7 die Parameternamen nicht im Bytecode beibehalten werden. Allerdings würde ich immer noch auf die Argumentnamen arg0, arg1 zugreifen können.

Wenn der Compiler ein Java 8 Compiler ist, der mit dem -parameters Flag läuft, würde ich erwarten, die ursprünglichen Parameternamen aus dem Quellcode zu erhalten.

Gibt es einen Mechanismus, den ich übersehen habe? Es ist merkwürdig, dass wir dies mithilfe der Reflection-API unter Verwendung von Parameter.getName() abfragen können, wenn wir diese Informationen während der Annotationsverarbeitung nicht abrufen können.

Antwort

0

Anstelle von ExecutableType verwenden Sie ExecutableElement. Von diesem können Sie seine Parameter erhalten, die alle Namen haben sollten. Sie können konvertieren mit Types.asElement.

+1

Ereignis mit dem ExecutableElement die Typnamen werden immer als "arg0" zurückgegeben, ... – ctron

+0

Entschuldigung, zu spät, um auf diesen Kommentar zu antworten. Die Namen "arg0", "arg1" usw. werden in der Frage angesprochen - wenn Sie mit Java 7 oder früher oder mit Java 8 ohne das '-Parameters'-Flag bauen, dann werden Parameternamen nicht im Bytecode gespeichert . In diesem Fall erscheinen sie als 'arg0',' arg1' usw. – jbunting