logo

Java-merknader

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.

  1. Metoden skal ikke ha noen kast-klausuler
  2. Metoden skal returnere en av følgende: primitive datatyper, streng, klasse, enum eller array av disse datatypene.
  3. Metoden skal ikke ha noen parameter.
  4. Vi bør legge ved @ like før grensesnittet nøkkelord for å definere merknad.
  5. Det kan tilordne en standardverdi til metoden.

Typer merknader

Det er tre typer merknader.

  1. Markørkommentar
  2. Enkeltverdikommentar
  3. Merknad med flere verdier
Java-merknadstyper

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

Slik bruker du flerverdikommentarer

La oss se koden for å bruke flerverdikommentaren.

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

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:

ElementtyperHvor merknaden kan brukes
TYPEklasse, grensesnitt eller oppregning
FELTEnger
METODEmetoder
KONSTRUKTØRkonstruktører
LOCAL_VARIABLElokale variabler
ANNOTATION_TYPEmerknadstype
PARAMETERparameter

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.

OppbevaringspolicyTilgjengelighet
RetentionPolicy.SOURCErefererer til kildekoden, forkastet under kompilering. Den vil ikke være tilgjengelig i den kompilerte klassen.
RetentionPolicy.CLASSrefererer til .class-filen, tilgjengelig for java-kompilatoren, men ikke til JVM . Det er inkludert i klassefilen.
RetentionPolicy.RUNTIMErefererer 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(&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()); }} 
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.