Java Anteckning är en tagg som representerar metadata d.v.s. bifogad med klass, gränssnitt, metoder eller fält för att indikera ytterligare information som kan användas av java-kompilator och JVM.
Anteckningar i Java används för att ge ytterligare information, så det är ett alternativt alternativ för XML- och Java-markörgränssnitt.
Först kommer vi att lära oss några inbyggda kommentarer och sedan går vi vidare med att skapa och använda anpassade kommentarer.
Inbyggda Java-anteckningar
Det finns flera inbyggda kommentarer i Java. Vissa anteckningar tillämpas på Java-kod och några på andra anteckningar.
Inbyggda Java-anteckningar som används i Java-kod
- @Åsidosätta
- @SuppressWarnings
- @Föråldrat
Inbyggda Java-anteckningar som används i andra kommentarer
- @Mål
- @Bibehållande
- @Ärvt
- @Dokumenterat
Förstå inbyggda anteckningar
Låt oss först förstå de inbyggda kommentarerna.
@Åsidosätta
@Override-kommentaren säkerställer att underklassmetoden åsidosätter den överordnade klassmetoden. Om det inte är så uppstår kompileringstidsfel.
Ibland gör vi det fåniga misstaget som stavfel etc. Så det är bättre att markera @Åsidosätt annotering som garanterar att metoden åsidosätts.
noll checkar i 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(); }}Testa det nu
Output:Comple Time Error
@SuppressWarnings
@SuppressWarnings-anteckning: används för att undertrycka varningar som utfärdas av kompilatorn.
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); }}Testa det nu
Now no warning at compile time.
Om du tar bort @SuppressWarnings('unchecked')-anteckningen kommer den att visa en varning vid kompilering eftersom vi använder icke-generisk samling.
@Föråldrat
@Föråldrad anteckning markerar att den här metoden är utfasad så kompilatorn skriver ut en varning. Den informerar användaren om att den kan tas bort i framtida versioner. Så det är bättre att inte använda sådana metoder.
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(); }}Testa det nu
Vid sammanställningstid:
Note: Test.java uses or overrides a deprecated API. <br> Note: Recompile with -Xlint:deprecation for details.
Vid körning:
hello n
Java anpassade anteckningar
Java anpassade anteckningar eller Java Användardefinierade anteckningar är lätta att skapa och använda. De @gränssnitt element används för att deklarera en anteckning. Till exempel:
@interface MyAnnotation{}
Här är MyAnnotation det anpassade anteckningsnamnet.
Punkter att komma ihåg för anpassad annoteringssignatur för Java
Det finns några punkter som bör komma ihåg av programmeraren.
- Metoden bör inte ha några kastsatser
- Metoden ska returnera något av följande: primitiva datatyper, sträng, klass, enum eller array av dessa datatyper.
- Metoden ska inte ha någon parameter.
- Vi bör bifoga @ strax före gränssnittsnyckelord för att definiera anteckning.
- Den kan tilldela metoden ett standardvärde.
Typer av anteckningar
Det finns tre typer av anteckningar.
- Marköranteckning
- Enkelvärdeskommentar
- Flervärdesanteckning
1) Marköranteckning
En annotering som inte har någon metod kallas markörkommentar. Till exempel:
@interface MyAnnotation{}
@Override och @Föråldrad är markörkommentarer.
2) Anteckning med ett värde
En anteckning som har en metod kallas enkelvärdeskommentar. Till exempel:
@interface MyAnnotation{ int value(); }
Vi kan också tillhandahålla standardvärdet. Till exempel:
@interface MyAnnotation{ int value() default 0; }
Så här applicerar du en anteckning med ett värde
Låt oss se koden för att tillämpa enkelvärdeskommentaren.
@MyAnnotation(value=10)
Värdet kan vara vad som helst.
företag vs företag
3) Flervärdeskommentarer
En kommentar som har mer än en metod kallas Multi-Value annotation. Till exempel:
@interface MyAnnotation{ int value1(); String value2(); String value3(); } }
Vi kan också tillhandahålla standardvärdet. Till exempel:
@interface MyAnnotation{ int value1() default 1; String value2() default ''; String value3() default 'xyz'; }
Så här använder du flervärdeskommentarer
Låt oss se koden för att tillämpa flervärdeskommentaren.
Bourne igen skal
@MyAnnotation(value1=10,value2='Arun Kumar',value3='Ghaziabad')
Inbyggda kommentarer som används i anpassade kommentarer i java
- @Mål
- @Bibehållande
- @Ärvt
- @Dokumenterat
@Mål
@Mål taggen används för att specificera vid vilken typ anteckningen används.
Java.lang.annoteringen. ElementTyp enum deklarerar många konstanter för att specificera vilken typ av element där annotering ska tillämpas såsom TYPE, METHOD, FIELD etc. Låt oss se konstanterna för ElementType enum:
Elementtyper | Där anteckningen kan tillämpas |
---|---|
TYP | klass, gränssnitt eller uppräkning |
FÄLT | fält |
METOD | metoder |
KONSTRUKTÖR | konstruktörer |
LOCAL_VARIABLE | lokala variabler |
ANNOTATION_TYPE | anteckningstyp |
PARAMETER | parameter |
Exempel för att ange kommentar för en klass
@Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); }
Exempel för att specificera anteckning för en klass, metoder eller fält
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD}) @interface MyAnnotation{ int value1(); String value2(); }
@Bibehållande
@Bibehållande annotering används för att specificera till vilken nivå annotering kommer att vara tillgänglig.
Retention Policy | Tillgänglighet |
---|---|
RetentionPolicy.SOURCE | hänvisar till källkoden, kasserad under kompileringen. Det kommer inte att vara tillgängligt i den kompilerade klassen. |
RetentionPolicy.CLASS | hänvisar till .class-filen, tillgänglig för java-kompilatorn men inte för JVM. Det ingår i klassfilen. |
RetentionPolicy.RUNTIME | hänvisar till körtiden, tillgänglig för java-kompilator och JVM. |
Exempel för att specificera RetentionPolicy
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); }
Exempel på anpassad anteckning: skapa, tillämpa och komma åt anteckningar
Låt oss se det enkla exemplet på att skapa, tillämpa och komma åt anteckningar.
Fil: 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()); }}Testa det nu
Output:value is: 10
ladda ner det här exemplet
Hur används inbyggda kommentarer i verkliga scenarier?
I ett verkligt scenario behöver java-programmerare bara tillämpa anteckningar. Han/hon behöver inte skapa och komma åt anteckningar. Att skapa och komma åt anteckningar utförs av implementeringsleverantören. På uppdrag av annoteringen utför java-kompilatorn eller JVM några ytterligare operationer.
@Ärvt
Som standard ärvs inte kommentarer till underklasser. @Inherited-anteckningen markerar anteckningen som ska ärvas till underklasser.
@Inherited @interface ForEveryone { }//Now it will be available to subclass also @interface ForEveryone { } class Superclass{} class Subclass extends Superclass{}
@Dokumenterat
@Documented Markerar anteckningen för inkludering i dokumentationen.