Java Merknad er en kode som representerer metadata dvs. vedlagt med klasse, grensesnitt, metoder eller felt for å indikere noe tilleggsinformasjon som kan brukes av java-kompilatoren og JVM.
Merknader i Java brukes til å gi tilleggsinformasjon, så det er et alternativt alternativ for XML- og Java-markørgrensesnitt.
Først vil vi lære noen innebygde merknader, så vil vi fortsette å lage og bruke egendefinerte merknader.
Innebygde Java-merknader
Det er flere innebygde merknader i Java. Noen merknader brukes på Java-kode og noen på andre merknader.
Innebygde Java-merknader brukt i Java-kode
- @Overstyring
- @SuppressWarnings
- @Utviklet
Innebygde Java-merknader brukt i andre merknader
- @Mål
- @Bevaring
- @Arvet
- @Dokumentert
Forstå innebygde merknader
La oss først forstå de innebygde merknadene.
@Overstyring
@Override-kommentaren sikrer at underklassemetoden overstyrer den overordnede klassemetoden. Hvis det ikke er tilfelle, oppstår kompileringstidsfeil.
Noen ganger gjør vi den dumme feilen som stavefeil osv. Så det er bedre å merke @Override annotering som gir sikkerhet for at metoden er overstyrt.
java får nåværende dato
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(); }}Test det nå
Output:Comple Time Error
@SuppressWarnings
@SuppressWarnings-kommentar: brukes til å undertrykke advarsler utstedt av kompilatoren.
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); }}Test det nå
Now no warning at compile time.
Hvis du fjerner @SuppressWarnings('unchecked')-kommentaren, vil den vise advarsel ved kompilering fordi vi bruker ikke-generisk samling.
@Utviklet
@Utdatert merknad markerer at denne metoden er utdatert, så kompilatoren skriver ut advarsel. Den informerer brukeren om at den kan bli fjernet i fremtidige versjoner. Så det er bedre å ikke bruke slike metoder.
java sammenligning
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(); }}Test det nå
Ved kompileringstid:
Note: Test.java uses or overrides a deprecated API. <br> Note: Recompile with -Xlint:deprecation for details.
Ved kjøretid:
hello n
Java tilpassede merknader
Java Custom merknader eller Java Brukerdefinerte merknader er enkle å lage og bruke. De @grensesnitt element brukes til å erklære en merknad. For eksempel:
@interface MyAnnotation{}
Her er MyAnnotation det tilpassede merknadsnavnet.
Punkter å huske på for egendefinert java-annoteringssignatur
Det er få punkter som bør huskes av programmereren.
- Metoden skal ikke ha noen kast-klausuler
- Metoden skal returnere en av følgende: primitive datatyper, streng, klasse, enum eller array av disse datatypene.
- Metoden skal ikke ha noen parameter.
- Vi bør legge ved @ like før grensesnittet nøkkelord for å definere merknad.
- Det kan tilordne en standardverdi til metoden.
Typer merknader
Det er tre typer merknader.
- Markørkommentar
- Enkeltverdikommentar
- Merknad med flere verdier
1) Markørkommentar
En merknad som ikke har noen metode, kalles markørkommentar. For eksempel:
@interface MyAnnotation{}
@Override og @Utviklet er markørkommentarer.
2) Enkeltverdikommentar
En merknad som har én metode, kalles enkeltverdikommentar. For eksempel:
fcfs
@interface MyAnnotation{ int value(); }
Vi kan også gi standardverdien. For eksempel:
@interface MyAnnotation{ int value() default 0; }
Slik bruker du enkeltverdikommentarer
La oss se koden for å bruke enkeltverdikommentaren.
@MyAnnotation(value=10)
Verdien kan være hva som helst.
3) Merknad med flere verdier
En merknad som har mer enn én metode, kalles Multi-Value-annotering. For eksempel:
@interface MyAnnotation{ int value1(); String value2(); String value3(); } }
Vi kan også gi standardverdien. For eksempel:
inkscape vs gimp
@interface MyAnnotation{ int value1() default 1; String value2() default ''; String value3() default 'xyz'; }
Slik bruker du flerverdikommentarer
La oss se koden for å bruke flerverdikommentaren.
@MyAnnotation(value1=10,value2='Arun Kumar',value3='Ghaziabad')
Innebygde merknader brukt i tilpassede merknader i java
- @Mål
- @Bevaring
- @Arvet
- @Dokumentert
@Mål
@Mål taggen brukes til å spesifisere hvilken type merknaden brukes.
Java.lang.annoteringen. ElementType enum erklærer mange konstanter for å spesifisere typen element der merknaden skal brukes, for eksempel TYPE, METHOD, FIELD osv. La oss se konstantene til ElementType enum:
Elementtyper | Hvor merknaden kan brukes |
---|---|
TYPE | klasse, grensesnitt eller oppregning |
FELT | Enger |
METODE | metoder |
KONSTRUKTØR | konstruktører |
LOCAL_VARIABLE | lokale variabler |
ANNOTATION_TYPE | merknadstype |
PARAMETER | parameter |
Eksempel for å spesifisere merknad for en klasse
@Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); }
Eksempel for å spesifisere merknad for en klasse, metoder eller felt
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD}) @interface MyAnnotation{ int value1(); String value2(); }
@Bevaring
@Bevaring merknad brukes til å spesifisere til hvilket nivå merknad vil være tilgjengelig.
Oppbevaringspolicy | Tilgjengelighet |
---|---|
RetentionPolicy.SOURCE | refererer til kildekoden, forkastet under kompilering. Den vil ikke være tilgjengelig i den kompilerte klassen. |
RetentionPolicy.CLASS | refererer til .class-filen, tilgjengelig for java-kompilatoren, men ikke til JVM . Det er inkludert i klassefilen. |
RetentionPolicy.RUNTIME | refererer til kjøretiden, tilgjengelig for java-kompilatoren og JVM . |
Eksempel for å spesifisere RetentionPolicy
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); }
Eksempel på tilpasset merknad: opprette, bruke og få tilgang til merknader
La oss se det enkle eksemplet på å lage, bruke og få tilgang til merknader.
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()); }}Test det nå
Output:value is: 10
last ned dette eksemplet
Hvordan brukes innebygde merknader i virkelige scenarier?
I virkelige scenarier trenger java-programmerer bare å bruke merknader. Han/hun trenger ikke å opprette og få tilgang til merknader. Oppretting og tilgang til annotering utføres av implementeringsleverandøren. På vegne av merknaden utfører java-kompilatoren eller JVM noen ekstra operasjoner.
@Arvet
Som standard arves ikke merknader til underklasser. @Inherited-kommentaren markerer merknaden som skal arves til underklasser.
@Inherited @interface ForEveryone { }//Now it will be available to subclass also @interface ForEveryone { } class Superclass{} class Subclass extends Superclass{}
@Dokumentert
@Documented Markerer merknaden for inkludering i dokumentasjonen.