Java Anmerkung ist ein Tag, der das darstellt Metadaten d. h. angehängt an Klasse, Schnittstelle, Methoden oder Felder, um einige zusätzliche Informationen anzugeben, die vom Java-Compiler und der JVM verwendet werden können.
Anmerkungen in Java werden zur Bereitstellung zusätzlicher Informationen verwendet und sind daher eine alternative Option für XML- und Java-Markerschnittstellen.
Zuerst lernen wir einige integrierte Anmerkungen kennen, dann werden wir mit der Erstellung und Verwendung benutzerdefinierter Anmerkungen fortfahren.
Integrierte Java-Anmerkungen
In Java gibt es mehrere integrierte Anmerkungen. Einige Annotationen werden auf Java-Code angewendet, andere auf andere Annotationen.
Integrierte Java-Anmerkungen, die im Java-Code verwendet werden
- @Override
- @SuppressWarnings
- @Veraltet
Integrierte Java-Annotationen, die in anderen Annotationen verwendet werden
- @Ziel
- @Zurückbehaltung
- @Vererbt
- @Dokumentiert
Integrierte Anmerkungen verstehen
Lassen Sie uns zunächst die integrierten Anmerkungen verstehen.
@Override
Die Annotation @Override stellt sicher, dass die Methode der Unterklasse die Methode der übergeordneten Klasse überschreibt. Ist dies nicht der Fall, tritt ein Fehler bei der Kompilierung auf.
Manchmal machen wir dumme Fehler wie Rechtschreibfehler usw. Daher ist es besser, die Annotation @Override zu markieren, die sicherstellt, dass die Methode überschrieben wird.
Sortierarray in Java
class Animal{ void eatSomething(){System.out.println('eating something');} } class Dog extends Animal{ @Override void eatsomething(){System.out.println('eating foods');}//should be eatSomething } class TestAnnotation1{ public static void main(String args[]){ Animal a=new Dog(); a.eatSomething(); }}Testen Sie es jetzt
Output:Comple Time Error
@SuppressWarnings
@SuppressWarnings-Annotation: wird verwendet, um vom Compiler ausgegebene Warnungen zu unterdrücken.
import java.util.*; class TestAnnotation2{ @SuppressWarnings('unchecked') public static void main(String args[]){ ArrayList list=new ArrayList(); list.add('sonoo'); list.add('vimal'); list.add('ratan'); for(Object obj:list) System.out.println(obj); }}Testen Sie es jetzt
Now no warning at compile time.
Wenn Sie die Annotation @SuppressWarnings('unchecked') entfernen, wird beim Kompilieren eine Warnung angezeigt, da wir eine nicht generische Sammlung verwenden.
@Veraltet
Die Annotation „@Deprecated“ markiert, dass diese Methode veraltet ist, sodass der Compiler eine Warnung ausgibt. Es informiert den Benutzer darüber, dass es in zukünftigen Versionen möglicherweise entfernt wird. Daher ist es besser, solche Methoden nicht zu verwenden.
Git-Status
class A{ void m(){System.out.println('hello m');} @Deprecated void n(){System.out.println('hello n');} } class TestAnnotation3{ public static void main(String args[]){ A a=new A(); a.n(); }}Testen Sie es jetzt
Zur Kompilierungszeit:
Note: Test.java uses or overrides a deprecated API. <br> Note: Recompile with -Xlint:deprecation for details.
Zur Laufzeit:
hello n
Benutzerdefinierte Java-Anmerkungen
Benutzerdefinierte Java-Anmerkungen oder Java. Benutzerdefinierte Anmerkungen sind einfach zu erstellen und zu verwenden. Der @Schnittstelle -Element wird zum Deklarieren einer Anmerkung verwendet. Zum Beispiel:
@interface MyAnnotation{}
Hier ist MyAnnotation der Name der benutzerdefinierten Anmerkung.
Punkte, die Sie bei der benutzerdefinierten Java-Annotationssignatur beachten sollten
Es gibt einige Punkte, die der Programmierer beachten sollte.
- Die Methode sollte keine throws-Klauseln haben
- Die Methode sollte einen der folgenden Werte zurückgeben: primitive Datentypen, String, Klasse, Enumeration oder Array dieser Datentypen.
- Die Methode sollte keinen Parameter haben.
- Wir sollten @ direkt vor dem Schlüsselwort interface anhängen, um die Annotation zu definieren.
- Es kann der Methode einen Standardwert zuweisen.
Arten von Anmerkungen
Es gibt drei Arten von Anmerkungen.
- Markierungsanmerkung
- Einzelwertanmerkung
- Mehrwertige Anmerkung
1) Markierungsanmerkung
Eine Annotation ohne Methode wird Markerannotation genannt. Zum Beispiel:
@interface MyAnnotation{}
@Override und @Deprecated sind Markierungsanmerkungen.
Zahlen für das Alphabet
2) Einzelwertanmerkung
Eine Annotation mit einer Methode wird als Einzelwertannotation bezeichnet. Zum Beispiel:
@interface MyAnnotation{ int value(); }
Wir können auch den Standardwert bereitstellen. Zum Beispiel:
@interface MyAnnotation{ int value() default 0; }
So wenden Sie Einzelwertanmerkungen an
Sehen wir uns den Code zum Anwenden der Einzelwertanmerkung an.
@MyAnnotation(value=10)
Der Wert kann beliebig sein.
3) Mehrwertige Anmerkung
Eine Annotation, die über mehr als eine Methode verfügt, wird als Multi-Value-Annotation bezeichnet. Zum Beispiel:
@interface MyAnnotation{ int value1(); String value2(); String value3(); } }
Wir können auch den Standardwert bereitstellen. Zum Beispiel:
@interface MyAnnotation{ int value1() default 1; String value2() default ''; String value3() default 'xyz'; }
So wenden Sie mehrwertige Annotationen an
Sehen wir uns den Code zum Anwenden der mehrwertigen Annotation an.
@MyAnnotation(value1=10,value2='Arun Kumar',value3='Ghaziabad')
Integrierte Anmerkungen, die in benutzerdefinierten Anmerkungen in Java verwendet werden
- @Ziel
- @Zurückbehaltung
- @Vererbt
- @Dokumentiert
@Ziel
@Ziel Tag wird verwendet, um anzugeben, bei welchem Typ die Annotation verwendet wird.
Java generiert Zufallszahlen
Die java.lang.annotation. Elementtyp enum deklariert viele Konstanten, um den Elementtyp anzugeben, auf den die Annotation angewendet werden soll, z. B. TYPE, METHOD, FIELD usw. Sehen wir uns die Konstanten der ElementType-Enumeration an:
Elementtypen | Wo die Anmerkung angewendet werden kann |
---|---|
TYP | Klasse, Schnittstelle oder Aufzählung |
FELD | Felder |
METHODE | Methoden |
KONSTRUKTEUR | Konstrukteure |
LOKALE VARIABLE | lokale Variablen |
ANNOTATION_TYPE | Anmerkungstyp |
PARAMETER | Parameter |
Beispiel zum Angeben einer Anmerkung für eine Klasse
@Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); }
Beispiel zum Angeben einer Annotation für eine Klasse, Methoden oder Felder
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD}) @interface MyAnnotation{ int value1(); String value2(); }
@Zurückbehaltung
@Zurückbehaltung Annotation wird verwendet, um anzugeben, bis zu welcher Ebene Annotationen verfügbar sein werden.
Aufbewahrungsrichtlinie | Verfügbarkeit |
---|---|
RetentionPolicy.SOURCE | bezieht sich auf den Quellcode, der während der Kompilierung verworfen wird. Es wird in der kompilierten Klasse nicht verfügbar sein. |
RetentionPolicy.CLASS | bezieht sich auf die .class-Datei, die für den Java-Compiler verfügbar ist, jedoch nicht für JVM. Es ist in der Klassendatei enthalten. |
RetentionPolicy.RUNTIME | bezieht sich auf die Laufzeit, die dem Java-Compiler und der JVM zur Verfügung steht. |
Beispiel zur Angabe der RetentionPolicy
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); }
Beispiel für eine benutzerdefinierte Anmerkung: Erstellen, Anwenden und Zugreifen auf Anmerkungen
Sehen wir uns das einfache Beispiel für das Erstellen, Anwenden und Zugreifen auf Anmerkungen an.
Datei: Test.java
//Creating annotation import java.lang.annotation.*; import java.lang.reflect.*; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @interface MyAnnotation{ int value(); } //Applying annotation class Hello{ @MyAnnotation(value=10) public void sayHello(){System.out.println('hello annotation');} } //Accessing annotation class TestCustomAnnotation1{ public static void main(String args[])throws Exception{ Hello h=new Hello(); Method m=h.getClass().getMethod('sayHello'); MyAnnotation manno=m.getAnnotation(MyAnnotation.class); System.out.println('value is: '+manno.value()); }}Testen Sie es jetzt
Output:value is: 10
Laden Sie dieses Beispiel herunter
Wie werden integrierte Anmerkungen im realen Szenario verwendet?
Im realen Szenario muss der Java-Programmierer nur Annotationen anwenden. Er/Sie muss keine Anmerkungen erstellen und darauf zugreifen. Das Erstellen und Zugreifen auf Annotationen erfolgt durch den Implementierungsanbieter. Im Namen der Annotation führt der Java-Compiler oder die JVM einige zusätzliche Vorgänge aus.
@Vererbt
Standardmäßig werden Anmerkungen nicht an Unterklassen vererbt. Die Annotation @Inherited markiert die Annotation, die an Unterklassen vererbt werden soll.
@Inherited @interface ForEveryone { }//Now it will be available to subclass also @interface ForEveryone { } class Superclass{} class Subclass extends Superclass{}
@Dokumentiert
Das @Documented markiert die Anmerkung zur Aufnahme in die Dokumentation.