So erhalten Sie Annotationen von Interface- oder abstrakten Klassenmethoden in Java

8

Ich habe eine solche Schnittstelle:

%Vor%

und ich implementiere das so:

%Vor%

Wenn es möglich ist, die Annotation des Elternteils zu erreichen, möchte ich den Weg dazu kennen lernen.

Jede Hilfe oder Idee wird geschätzt.

    
ibrahimyilmaz 02.06.2014, 12:14
quelle

3 Antworten

8

Sie können Spring AnnotationUtils.findAnnotation , um Anmerkungen von Schnittstellen zu lesen.

Beispiel:

Schnittstelle I.java

%Vor%

Implementierende Klasse A.java

%Vor%

Es erfordert offensichtlich, Spring-Framework-Klassen in Ihr Projekt aufzunehmen (und zu importieren).

    
superbob 02.06.2014 12:26
quelle
2

Sie können keine Anmerkungen erben.

Aber ein Framework, das eine Annotation verwendet, kann prüfen, ob eine Annotation in der Superklasse vorhanden ist

    
NimChimpsky 02.06.2014 12:19
quelle
1

Es gibt keinen direkten Weg, um es zu bekommen. Wenn Sie wirklich benötigen, müssen Sie getInterfaces() manuell durchlaufen, um festzustellen, ob eine implementierte Schnittstelle die Annotation enthält. Wenn Sie nach (eventuell abstrakten) Oberklassen suchen möchten und die Annotation nicht @Inherited ist, können Sie die Superklassenkette erneut durchlaufen, bis Sie Object (*).

gefunden haben

Aber Vorsicht, wie folgende Post States zeigen, gibt es gute Gründe dafür, dass sie nicht direkt in Java implementiert werden: Warum vererben Java-Klassen keine Anmerkungen von implementierten Schnittstellen?

(*) Wenn die Annotation @Inherited ist, wird automatisch nach Superklassen gesucht, aber nicht nach Interfaces.

    
Serge Ballesta 02.06.2014 13:20
quelle

Tags und Links