Zunächst fällt auf, dass Java einige seiner eigenen, eingebauten Annotationen verwendet, um die Annotationen @Retention und @Target zu definieren. @Retention definiert durch Setzen eines Wertes RetentionPolicy, wie lange die Annotation im Code von Build bis zur Ausführung fortbesteht. Hier wird RUNTIME verwendet, so dass die definierte Annotation im Code zur Laufzeit beibehalten wird. RetentionPolicy.SOURCE würde eine Annotation bezeichnen, die der Compiler nutzt und dann verwirft. Mit RetentionPolicy.CLASS bleiben Annotationen bis nach dem Generieren der Klassendatei bestehen, können aber von der JVM zur Laufzeit verworfen werden.
Standardmäßig ist es möglich an jeder Stelle im Code eine Annotation hinzuzufügen. Mit der Annotation @Target kann dies auf bestimmte Teile des Codes beschränkt werden. Hier wurde das Ziel auf ElementType.METHOD gesetzt, so dass Annotationen nur mit einer Methode verknüpft werden können. Andere ElementTypes sind CONSTRUCTOR, FIELD, LOCAL_VARIABLE, PACKAGE, PARAMETER und TYPE, die alle eine Annotation auf genau dieses Java-Sprachelement beschränken. So wäre eine Annotation bei einer Einstellung für TYPE bei einer Definition wie zum Beispiel der folgenden möglich:
Übrigens kann die Annotation @Target sich auf einen einzelnen ElementType oder eine Gruppe von ElementTypes beziehen, falls eine Annotation auf eine Gruppe von Sprachelementen beschränkt werden soll.
Danach wird die Annotationsschnittstelle definiert. Das funktioniert genau wie bei einer normalen Schnittstellendeklaration, nur dass sie mit @interface als Annotation gekennzeichnet wird. Innerhalb dieser Schnittstelle werden daraufhin die Annotationsmethoden definiert, wie zum Beispiel abstrakte Methoden für die Informationen, die mit der Annotation verknüpft werden sollen. Es ergibt sich also String label(); für eine String-Eigenschaft namens „label“. Ohne Methoden dient die Annotation ausschließlich zum „Markieren“. Die Annotation @Overrides ist ein Beispiel hierfür. Wenn nur eine einzige Eigenschaft vergeben wird, sollte diese am besten „value“ heißen, weil dies gut funktioniert, wenn eine Annotation mit einem einzelnen unbenannten Parameter den Wert festlegt. Eigenschaften können auch Defaultwerte haben: „int width() default 40;“ definiert zum Beispiel eine ganzzahlige Eigenschaft mit dem Defaultwert 40.
Damit ist die Definition der Annotation abgeschlossen, so dass sie nun im Code verwendet werden kann. Hier eine Klasse SimpleData, in der sie verwendet wird:
Neueste Kommentare
Noch keine Kommentare zu Java mit Anmerkungen
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.