2015-04-24 3 views
7

Welche Standard Modifikatoren für x und m inWelche sind die Standardmodifikatoren für Felder und Methoden in einer Java-Annotation?

public @interface Anno { 
    int m() default x; 
    int x = 10; 
} 

sind?

Ich nehme an, dass der Code oben ist äquivalent zu:

public @interface Anno { 
    public int m() default x; 
    public static final int x = 10; 
} 

wo die Modifikatoren public und public static final redundant sind, aber ich habe keine offizielle Erklärung dafür finden.

Ich war auf der Suche hier: https://docs.oracle.com/javase/8/docs/technotes/guides/language/annotations.html https://docs.oracle.com/javase/tutorial/java/annotations/index.html http://www.vogella.com/tutorials/JavaAnnotations/article.html

Gibt es eine Dokumentation diese Modifier in Bezug auf? Oder könnte jemand eine "formale" Erklärung liefern?

Antwort

5

Ja, ich glaube, du hast Recht - und die ein bisschen Dokumentation die ich gefunden habe, dies zu unterstützen, ist in JLS 9.6:

Sofern hierin explizit geändert, alle Regeln, die normale Schnittstelle anwenden Deklarationen gelten für Annotationstyp-Deklarationen.

So ist es im Grunde wie eine normale Schnittstelle verhält, wo public und abstract sind redundant und alle Felder sind implizit statisch und endgültig.

+1

in einer normalen Schnittstelle ist auch implizit für Methoden implizit. –

+1

@ratchetfreak: True - und es sieht so aus als wäre es hier. Wird bearbeiten, wenn ich die Chance habe - aus dem Zug auszusteigen ... –

Verwandte Themen