logo

Java-Anmerkungen

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.

  1. Die Methode sollte keine throws-Klauseln haben
  2. Die Methode sollte einen der folgenden Werte zurückgeben: primitive Datentypen, String, Klasse, Enumeration oder Array dieser Datentypen.
  3. Die Methode sollte keinen Parameter haben.
  4. Wir sollten @ direkt vor dem Schlüsselwort interface anhängen, um die Annotation zu definieren.
  5. Es kann der Methode einen Standardwert zuweisen.

Arten von Anmerkungen

Es gibt drei Arten von Anmerkungen.

  1. Markierungsanmerkung
  2. Einzelwertanmerkung
  3. Mehrwertige Anmerkung
Java-Annotationstypen

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 &apos;&apos;; String value3() default &apos;xyz&apos;; } 

So wenden Sie mehrwertige Annotationen an

Sehen wir uns den Code zum Anwenden der mehrwertigen Annotation an.

 @MyAnnotation(value1=10,value2=&apos;Arun Kumar&apos;,value3=&apos;Ghaziabad&apos;) 

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:

ElementtypenWo die Anmerkung angewendet werden kann
TYPKlasse, Schnittstelle oder Aufzählung
FELDFelder
METHODEMethoden
KONSTRUKTEURKonstrukteure
LOKALE VARIABLElokale Variablen
ANNOTATION_TYPEAnmerkungstyp
PARAMETERParameter

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.

AufbewahrungsrichtlinieVerfügbarkeit
RetentionPolicy.SOURCEbezieht sich auf den Quellcode, der während der Kompilierung verworfen wird. Es wird in der kompilierten Klasse nicht verfügbar sein.
RetentionPolicy.CLASSbezieht 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.RUNTIMEbezieht 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(&apos;hello annotation&apos;);} } //Accessing annotation class TestCustomAnnotation1{ public static void main(String args[])throws Exception{ Hello h=new Hello(); Method m=h.getClass().getMethod(&apos;sayHello&apos;); MyAnnotation manno=m.getAnnotation(MyAnnotation.class); System.out.println(&apos;value is: &apos;+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.