Anmerkungen in Java: Typen, Verwendungen und Beispiele
Veröffentlicht: 2022-05-19Eine Annotation in einer Programmiersprache wie Java bezieht sich auf die syntaktischen Metadaten, die in den Quellcode von Java integriert werden können. Verschiedene Faktoren wie Java-Pakete, Variablen, Klassen, Parameter und Methoden können annotiert werden. Entwickler können die Java-Anmerkungen einfach direkt aus den Quelldateien lesen, genau wie Javadoc-Tags.
Java-Anmerkungen können auch in die Ausgabe-Java-Klassendateien des Java-Compilers aufgenommen und daraus gelesen werden. Dadurch kann die virtuelle Java-Maschine Anmerkungen verwalten und sie zur Laufzeit durch eine Reflektion lesen. In Java ist es möglich, Meta-Annotationen aus bestehenden zu erstellen.
Dies sind einige Grundlagen von Anmerkungen in Java:
- Anmerkungen beginnen immer mit einem '@'. Zum Beispiel: '@override', '@target', '@SuppressWarnings' usw.
- Anmerkungen wirken sich nicht auf das Verhalten eines kompilierten Programms aus.
- Anmerkungen helfen bei der Zuordnung von Metadaten zu Programmkomponenten wie Methoden, Klassen, Variablen usw.
- Anmerkungen sind nicht nur Kommentare, da sie beeinflussen können, wie ein Programm vom Compiler verarbeitet wird. Sie bieten zusätzliche Compiler-Informationen über das Programm, sind aber nicht Teil des Programms selbst. Daher wirken sich diese Anmerkungen nicht auf die Ausführung des kompilierten Programms aus.
Arten von Anmerkungen in Java
1. Einzelwertanmerkungen
Anmerkungen mit einem Wert lassen nur eine Kurzform zu, da sie nur ein Mitglied enthalten. Dem Mitglied muss nach Anwendung der Anmerkung ein Wert gegeben werden. Der Name der Annotation muss jedoch nicht angegeben werden. Der Member muss einen Wert haben, wenn die Kurzschrift verwendet werden soll. Zum Beispiel:
@TestAnnotation("testen");
2. Vollständige Anmerkungen
Vollständige Anmerkungen bestehen aus verschiedenen Daten wie Datenelementen, Werten, Paaren und Namen.
Zum Beispiel:
@TestAnnotation(owner=“Rahul“, value=“Class Geeks“)
Lernen Sie Softwareentwicklungskurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.
3. Sich wiederholende Anmerkungen
Wenn eine Anmerkung mehr als einmal auf einzelne Objekte angewendet werden kann, wird sie als wiederholte Anmerkung bezeichnet. Sich wiederholende Anmerkungen werden mit dem Tag @Repeatable angegeben, wie im Paket java.lang.annotation definiert. Sein Wertefeld gibt den Containertyp der wiederholten Anmerkung an.
Der Container ist als Anmerkung mit einem Wertefeld definiert, das ein Array sich wiederholender Anmerkungen enthält. Um eine wiederholte Anmerkung zu erstellen, erstellen Sie zuerst die Containeranmerkung und geben Sie dann den Anmerkungstyp als Eingabe für die @Repeatable-Anmerkung an.
Zum Beispiel:
// Java-Programm zum Demonstrieren einer wiederholbaren Anmerkung
// Erforderliche Klassen importieren
import java.lang.annotation.Annotation;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;
// Wortanmerkung wiederholbar machen
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(MyRepeatedAnnos.class)
@Schnittstellenwörter
{
String word() default „Hallo“;
int value() default 0;
}
// Container-Anmerkung erstellen
@Retention(RetentionPolicy.RUNTIME)
@interface MyRepeatedAnnos
{
Wörter[] wert();
}
öffentliche Klasse Main {
// Wörter auf newMethod wiederholen
@Wörter (Wort = „Erster“, Wert = 1)
@Wörter (Wort = „Sekunde“, Wert = 2)
public static void newMethod()
{
Hauptobjekt = new Main();
Versuchen {
Klasse<?> c = obj.getClass();
// Rufen Sie die Anmerkung für newMethod ab
Methode m = c.getMethod("newMethod");
// Zeigt die wiederholte Anmerkung an
Anmerkung Ann
= m.getAnnotation(MyRepeatedAnnos.class);
System.out.println(anno);
}
catch (NoSuchMethodException e) {
System.out.println(e);
}
}
public static void main(String[] args) { newMethod(); }
}
Die endgültige Ausgabe wäre: @MyRepeatedAnnos(value={@Words(value=1, word=”First”), @Words(value=2, word=”Second”)})
Erkunden Sie unsere beliebten Softwareentwicklungskurse
SL. Nein | Softwareentwicklungsprogramme | |
1 | Master of Science in Informatik von LJMU & IIITB | Caltech CTME Cybersecurity-Zertifikatsprogramm |
2 | Full-Stack-Entwicklungs-Bootcamp | PG-Programm in Blockchain |
3 | Executive Post Graduate Program in Softwareentwicklung - Spezialisierung auf DevOps | Alle Softwareentwicklungskurse anzeigen |
3. Marker-Anmerkungen
Markierungsanmerkungen dienen nur zu Deklarationszwecken. Weder enthält diese Annotation irgendwelche Mitglieder, noch existieren darin irgendwelche Daten. Sein einziger Zweck besteht darin, als Anmerkung präsent zu sein. Beispiel: @Override.
4. Geben Sie Anmerkungen ein
Diese Annotationen können überall verwendet werden, wo ein Typ verwendet wird. Beispielsweise können wir den Rückgabetyp einer Methode kommentieren. Typanmerkungen werden mit der Annotation @Target gekennzeichnet.
Code, der Typanmerkungen veranschaulichen kann, sind:
// Erforderliche Klassen importieren
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
// Target-Annotation verwenden, um einen Typ zu kommentieren
@Target(ElementType.TYPE_USE)
// Eine einfache Typanmerkung deklarieren
@interface TypeAnnoDemo{}
// Hauptklasse
öffentliche Klasse GFG {
// Haupttreibermethode
public static void main(String[] args) {
// Annotieren des Typs eines Strings
@TypeAnnoDemo String string = „Dieser Code ist mit einer Typanmerkung versehen“;
System.out.println (Zeichenfolge);
ABC();
}
// Rückgabetyp einer Funktion annotieren
statisch @TypeAnnoDemo int abc() {
System.out.println("Der Rückgabetyp dieser Funktion ist kommentiert");
0 zurückgeben;
}
Beispiele für vordefinierte Anmerkungen
Es gibt viele Arten von vordefinierten Anmerkungen, die wir bereits erwähnt haben. Lassen Sie uns einen Blick darauf werfen:
1. @Überschreiben
Diese Markierungsanmerkung kann nur für Methoden verwendet werden. Jede Methode mit der Annotation @override muss eine andere Methode aus einer übergeordneten Klasse ersetzen. Andernfalls wird ein Kompilierzeitfehler ausgelöst. Dies geschieht, da sichergestellt werden muss, dass die Oberklasse tatsächlich überschrieben und nicht nur überladen wird.
Code, der die Override-Anmerkung veranschaulichen kann, ist:
// Klasse 1
Klasse Basis
{
öffentlich void Anzeige()
{
System.out.println ("Basisanzeige ()");
}
public static void main(String args[])
{
Basis t1 = neu abgeleitet ();
t1.Anzeige ();
}
}
// Klasse 2
// Erweiterung über Klasse
Klasse Derived erweitert Base
{
@Überschreiben
öffentlich void Anzeige()
{
System.out.println ("Abgeleitete Anzeige ()");
}
}
2. @Ziel
Es soll nur als Anmerkung zu einer anderen Anmerkung verwendet werden. @Target akzeptiert einen Parameter, der eine ElementType-Konstante sein muss. Der Parameter entscheidet, auf welche Deklarationen er angewendet werden kann. Die Annotation @Target kann mehrere Werte anstelle nur eines einzelnen Werts haben. Wenn jedoch mehrere Werte deklariert werden müssen, müssen sie in Form von geschweiften Klammern vorliegen, wie z. B.: @Target({ElementType.FIELD, ElementType.LOCAL_VARIABLE}).
Die Annotation @Retention kann hier verwendet werden, um den Aufbewahrungsstatus der Annotation zu bestimmen. Drei Faktoren wirken sich auf eine @Retention-Anmerkung aus:
- Quelle: Der Compiler ignoriert die Anmerkungen, da sie normalerweise auf der Quellebene gehalten werden.
- Laufzeit: Es wird zur Laufzeit beibehalten.
- Klasse: Die Anmerkungen bleiben zur Kompilierzeit und werden vom Java-Programm ignoriert.
3. @Geerbt
Diese Annotation kann nur für Deklarationszwecke verwendet werden und wirkt sich daher nur auf bestimmte Klassendeklarationen aus. Eine Anmerkung kann die andere ersetzen und ihre Eigenschaften erben. Somit kann die Oberklasse überprüft werden, wenn bestimmte Anmerkungen in der Unterklasse fehlen. Wenn die Annotation jedoch vorhanden ist, erhält sie die Annotation @Inherited.
Zum Beispiel:
// Klasse 1
Klasse DeprecatedTest
{
@Veraltet
öffentlich void Anzeige()
{
System.out.println("Veraltete Testanzeige()");
}
}
// Klasse 2
öffentliche Klasse SuppressWarningTest
{
// Wenn wir die Anmerkung unten kommentieren, generiert das Programm
// Warnung
@SuppressWarnings({"markiert", "veraltet"})
public static void main(String args[])
{
DeprecatedTest d1 = neuer DeprecatedTest();
d1.Anzeige ();
}
}
Fazit
Hier haben wir etwas über Annotationen in Java gelernt. Wir haben auch die Arten von Anmerkungen in Java und ihre Verwendung kennengelernt, die Java-Entwicklern helfen können, problemlos robuste und skalierbare Programme zu erstellen.
Wenn Sie mehr über Java-Konzepte erfahren möchten, ist die berufsbezogene PG-Zertifizierung in Softwareentwicklung von upGrad die beste Wahl, um ein umfassendes Verständnis von Programmiersprachen wie Java, HTML, JS sowie anderen Softwareentwicklungstools und -bibliotheken zu erlangen.
Das Programm richtet sich an Studenten im letzten Jahr oder arbeitslose Absolventen, die sich eine Einstiegsposition in diesem Bereich sichern möchten. Der 5-monatige Kurs umfasst die Spezialisierung auf MERN/Cloud-Native und hilft den Schülern beim Aufbau eines erstklassigen Portfolios, indem sie sie 5 praktischen Projekten aussetzen.
Also, warte nicht. Besuchen Sie upGrad und buchen Sie noch heute Ihren Platz!
Was sind @jsonproperty-Anmerkungen?
Mit Jsonproperty-Anmerkungen können Entwickler während der Serialisierung und Deserialisierung JSON-Schlüssel Eigenschaftsnamen zuordnen. Basierend auf den Standardeinstellungen von Java werden Schlüssel während der Serialisierung POJO-Feldern zugeordnet. Json-Anmerkungen helfen dabei, diese Standardfunktionalität zu überschreiben, indem Zeichenfolgenattribute verwendet werden, die den zugeordneten Namen angeben.
Was sind Hibernate-Anmerkungen?
Hibernate Annotations sind eine weitere Technik zum Angeben von Metadaten beim Mapping des Objekts und der relationalen Tabelle. Sie sind eine leistungsstarke und relativ neue Mapping-Methode, die anstelle von XML-Mapping-Metadaten verwendet werden kann. Mithilfe von Hibernate-Anmerkungen können Benutzer Metadaten in einer einzigen POJO-Java-Datei speichern, die auch den Code enthält, und so zum besseren Verständnis einer Tabellenstruktur beitragen.
Was sind @SuppressWarnings?
Die Annotation @SuppressWarnings benachrichtigt den Compiler über unterdrückte Warnungen. Die Benachrichtigungen sind in Zeichenfolgenform nach Namen vorhanden. Es kann jeder Art von Erklärung gegeben werden. Java klassifiziert Warnungen in zwei Klassen, nämlich ungeprüft und veraltet. Wenn älterer Code mit generischem Code interagiert, wird eine ungeprüfte Warnung ausgegeben.