Grundlegendes zu Java-Annotationen – Java @annotations Tutorial

Veröffentlicht: 2019-10-22
Anmerkungen auf Paketebene

Wie und wo werden Anmerkungen in Java verwendet?

Eine Anmerkung in der Computerprogrammiersprache Java ist eine spezielle Form von syntaktischen Metadaten, die dem Java-Quellcode hinzugefügt werden können.

Klassen, Methoden, Variablen, Parameter und Pakete können kommentiert werden. Im Gegensatz zu Javadoc-Tags können Java-Anmerkungen dahingehend reflektierend sein, dass sie in Klassendateien eingebettet werden können, die vom Compiler generiert werden, und von der Java-VM beibehalten werden können, um zur Laufzeit abrufbar gemacht zu werden.

Es ist möglich, Meta-Annotationen aus den vorhandenen in Java zu erstellen, was dieses Konzept noch ausgefeilter macht.

Java definiert eine Reihe von Anmerkungen, die in die Sprache integriert sind.

Java-Anmerkungen verstehen - Crunchify-Tipps
Java-Anmerkungen verstehen – Crunchify-Tipps

Auf Java-Code angewendete Anmerkungen:

  • @Override – Überprüft, ob die Funktion eine Überschreibung ist. Verursacht eine Kompilierungswarnung, wenn die Funktion nicht in einer der übergeordneten Klassen gefunden wird.
  • @Deprecated – Markiert die Funktion als veraltet. Verursacht eine Compile-Warnung, wenn die Funktion verwendet wird.
  • @SuppressWarnings – Weist den Compiler an, die in den Anmerkungsparametern angegebenen Kompilierzeitwarnungen zu unterdrücken.

Auf andere Anmerkungen angewendete Anmerkungen:

  • @Retention – Gibt an, wie die markierte Anmerkung gespeichert wird – entweder nur im Code, in die Klasse kompiliert oder zur Laufzeit durch Reflektion verfügbar.
  • @Documented – Markiert eine weitere Anmerkung zur Aufnahme in die Dokumentation.
  • @Target – Markiert eine weitere Anmerkung, um einzuschränken, auf welche Art von Java-Elementen die Anmerkung angewendet werden kann.
  • @Inherited – Markiert eine weitere Annotation, die an Unterklassen der annotierten Klasse vererbt werden soll (standardmäßig werden Annotationen nicht an Unterklassen vererbt).

Schauen wir uns diese anhand von Beispielbeispielen an:

1) @Override-Anmerkung:

Ihr Vorhandensein zeigt dem Compiler an, dass die annotierte Methode eine vorhandene Oberklassenmethode überschreiben muss.

Der häufigste Anwendungsfall für @Override sind Objektmethoden :

Der Hauptgrund für die Erstellung von @Override war der Umgang mit einfachen Tippfehlern .

Zum Beispiel eine Methode, die fälschlicherweise als deklariert wurde

ist in der Tat keine Überschreibung – der Methodenname besteht ausschließlich aus Kleinbuchstaben , sodass er nicht genau mit dem Namen der Methode hashValue() übereinstimmt . Es wird jedoch perfekt kompiliert. Ein solcher Fehler ist leicht zu machen und schwer zu fangen, was eine gefährliche Kombination ist. Die Verwendung der Annotation @Override verhindert, dass Sie solche Fehler machen.

Sie sollten es sich zur Gewohnheit machen, @Override immer dann zu verwenden, wenn Sie eine Methode der Oberklasse überschreiben.

Verständnis von Java-Anmerkungen

2) @Veraltete Anmerkung:

Diese Anmerkung weist darauf hin, dass das markierte Element veraltet ist und nicht mehr verwendet werden sollte. Der Compiler generiert eine Warnung, wenn ein Programm eine Methode, Klasse oder ein Feld mit der Annotation @Deprecated .

Wenn ein Element veraltet ist, sollte es auch mit dem Javadoc-Tag @deprecated dokumentiert werden, wie im folgenden Beispiel gezeigt.

3) @SuppressWarnings-Anmerkung:

Sag es einfach dem Compiler, bitte nicht schreien. Ich weiß was ich tue .

4) @Retention-Anmerkung:

Die Aufbewahrungsanmerkung gibt an, wo und wie lange Annotationen dieses Typs aufbewahrt werden sollen.

Es gibt drei Werte:

  • RetentionPolicy.SOURCE —Anmerkungen dieses Typs werden nur auf Quellebene beibehalten und vom Compiler ignoriert.
  • RetentionPolicy.CLASS – Anmerkungen dieses Typs werden vom Compiler zur Kompilierzeit beibehalten, aber von der VM ignoriert.
  • RetentionPolicy.RUNTIME – Anmerkungen dieses Typs werden von der VM beibehalten, sodass sie zur Laufzeit nur gelesen werden können.

5) @Dokumentierte Anmerkung:

Versuchen Sie nun, den Java Doc-Befehl auszuführen, und sehen Sie sich die Ausgabe an.

6) @Target-Anmerkung:

Ziel gibt an, welche Programmelemente kommentiert werden können, indem Instanzen des kommentierten Anmerkungstyps verwendet werden. Der Wert von Target ist eines der Mitglieder der Aufzählung java.lang.annotation.ElementType :

  1. ANNOTATION_TYPE. Der kommentierte Annotationstyp kann verwendet werden, um die Deklaration des Annotationstyps zu kommentieren.
  2. KONSTRUKTEUR. Der kommentierte Annotationstyp kann verwendet werden, um die Konstruktordeklaration zu kommentieren.
  3. BEREICH. Der kommentierte Annotationstyp kann verwendet werden, um die Felddeklaration zu kommentieren.
  4. LOKALE VARIABLE. Der kommentierte Annotationstyp kann verwendet werden, um lokale Variablendeklarationen zu kommentieren.
  5. METHODE. Der annotierte Annotationstyp kann zum Annotieren von Methodendeklarationen verwendet werden.
  6. PAKET. Der annotierte Annotationstyp kann zum Annotieren von Paketdeklarationen verwendet werden.
  7. PARAMETER. Der annotierte Annotationstyp kann zum Annotieren von Parameterdeklarationen verwendet werden.
  8. ART. Der annotierte Annotationstyp kann zum Annotieren von Typdeklarationen verwendet werden.

7) @Inherited-Anmerkung:

Genau wie der Name klingt, wird ein @Inherited -Annotationstyp von Unterklassen eines annotierten Typs geerbt.

In diesem Beispiel wurde Superclass explizit mit @ForEveryone und @JustForMe . Subclass wurde nicht explizit mit beiden gekennzeichnet; es erbt jedoch @ForEveryone , weil letzteres mit @Inherited kommentiert ist.

@JustForMe ist nicht kommentiert, wird also nicht von Subclass geerbt.

Hier ist eine Anmerkung auf Klassenebene

Anmerkungen auf Klassenebene