Opombe Java

Opombe Java

Java Opomba je oznaka, ki predstavlja metapodatki tj. pripet z razredom, vmesnikom, metodami ali polji za označevanje nekaterih dodatnih informacij, ki jih lahko uporabita prevajalnik java in JVM.

Opombe v Javi se uporabljajo za zagotavljanje dodatnih informacij, zato so alternativna možnost za vmesnike označevalcev XML in Java.

Najprej se bomo naučili nekaj vgrajenih opomb, nato pa bomo nadaljevali z ustvarjanjem in uporabo opomb po meri.


Vgrajene opombe Java

V Javi je več vgrajenih opomb. Nekatere opombe so uporabljene za kodo Java, nekatere pa druge opombe.

Vgrajene opombe Java, ki se uporabljajo v kodi Java

  • @Preglasi
  • @SuppressWarnings
  • @Zastarelo

Vgrajene opombe Java, ki se uporabljajo v drugih opombah

  • @Target
  • @Zadrževanje
  • @Podedovano
  • @Dokumentirano

Razumevanje vgrajenih opomb

Najprej razumemo vgrajene opombe.

@Preglasi

Opomba @Override zagotavlja, da metoda podrazreda preglasi metodo nadrejenega razreda. Če ni tako, pride do napake v času prevajanja.

Včasih naredimo neumno napako, kot so črkovalne napake itd. Zato je bolje označiti opombo @Override, ki zagotavlja, da je metoda preglasena.

 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(); }}  
Preizkusite zdaj
 Output:Comple Time Error  

@SuppressWarnings

Opomba @SuppressWarnings: uporablja se za zatiranje opozoril, ki jih izda prevajalnik.

 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); }}  
Preizkusite zdaj
 Now no warning at compile time.  

Če odstranite opombo @SuppressWarnings('unchecked'), bo v času prevajanja prikazano opozorilo, ker uporabljamo negenerično zbirko.


@Zastarelo

Opomba @Deprecated označuje, da je ta metoda zastarela, zato prevajalnik natisne opozorilo. Uporabnika obvešča, da bo morda odstranjen v prihodnjih različicah. Zato je bolje, da takšnih metod ne uporabljate.

 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(); }}  
Preizkusite zdaj

V času prevajanja:

 Note: Test.java uses or overrides a deprecated API. <br> Note: Recompile with -Xlint:deprecation for details.  

Med izvajanjem:

 hello n  

Opombe po meri Java

Opombe po meri Java ali Java Uporabniško določene opombe je enostavno ustvariti in uporabljati. The @vmesnik element se uporablja za deklaracijo opombe. Na primer:

 @interface MyAnnotation{}  

Tu je MyAnnotation ime opombe po meri.

Točke, ki si jih morate zapomniti za podpis pripisov po meri java

Obstaja nekaj točk, ki bi si jih moral programer zapomniti.

  1. Metoda ne sme imeti klavzul o vrženju
  2. Metoda mora vrniti eno od naslednjega: primitivne podatkovne tipe, niz, razred, enum ali niz teh podatkovnih tipov.
  3. Metoda ne sme imeti nobenega parametra.
  4. Tik pred ključno besedo vmesnika moramo priložiti @, da definiramo opombo.
  5. Metodi lahko dodeli privzeto vrednost.

Vrste opomb

Obstajajo tri vrste opomb.

  1. Opomba markerja
  2. Opomba z eno vrednostjo
  3. Opomba z več vrednostmi
Vrste pripisov Java

1) Opomba markerja

Opomba, ki nima metode, se imenuje oznaka markerja. Na primer:

 @interface MyAnnotation{}  

@Override in @Deprecated sta opombi označevalca.


2) Opomba z eno vrednostjo

Pripis, ki ima eno metodo, se imenuje pripis z eno vrednostjo. Na primer:

 @interface MyAnnotation{ int value(); }  

Zagotovimo lahko tudi privzeto vrednost. Na primer:

 @interface MyAnnotation{ int value() default 0; }  

Kako uporabiti opombo z eno vrednostjo

Oglejmo si kodo za uporabo opombe z eno vrednostjo.

 @MyAnnotation(value=10)  

Vrednost je lahko karkoli.


3) Opomba z več vrednostmi

Opomba, ki ima več kot eno metodo, se imenuje opomba z več vrednostmi. Na primer:

 @interface MyAnnotation{ int value1(); String value2(); String value3(); } }  

Zagotovimo lahko tudi privzeto vrednost. Na primer:

 @interface MyAnnotation{ int value1() default 1; String value2() default &apos;&apos;; String value3() default &apos;xyz&apos;; }  

Kako uporabiti opombo z več vrednostmi

Oglejmo si kodo za uporabo opombe z več vrednostmi.

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

Vgrajene opombe, ki se uporabljajo v opombah po meri v Javi

  • @Target
  • @Zadrževanje
  • @Podedovano
  • @Dokumentirano

@Target

@Target se uporablja za določitev, pri kateri vrsti se uporablja opomba.

Opomba java.lang. ElementType enum deklarira številne konstante za določitev vrste elementa, kjer naj se uporabi opomba, kot so TYPE, METHOD, FIELD itd. Oglejmo si konstante enuma ElementType:

Vrste elementov Kje je mogoče uporabiti opombo
VRSTA razred, vmesnik ali naštevanje
POLJE polja
METODA metode
KONSTRUKTOR konstruktorji
LOCAL_VARIABLE lokalne spremenljivke
ANNOTATION_TYPE vrsta opombe
PARAMETER parameter

Primer podajanja opombe za razred

 @Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); }  

Primer podajanja pripisov za razred, metode ali polja

 @Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD}) @interface MyAnnotation{ int value1(); String value2(); }  

@Zadrževanje

@Zadrževanje opomba se uporablja za določitev, do katere ravni bo opomba na voljo.

RetentionPolicy Razpoložljivost
RetentionPolicy.SOURCE se nanaša na izvorno kodo, zavrženo med prevajanjem. Ne bo na voljo v prevedenem razredu.
RetentionPolicy.CLASS se nanaša na datoteko .class, ki je na voljo prevajalniku java, ne pa tudi JVM. Vključen je v datoteko razreda.
RetentionPolicy.RUNTIME se nanaša na čas izvajanja, ki je na voljo prevajalniku java in JVM.

Primer podajanja RetentionPolicy

 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); }  

Primer opombe po meri: ustvarjanje, uporaba in dostop do opombe

Oglejmo si preprost primer ustvarjanja, uporabe in dostopa do opombe.

Datoteka: 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()); }}  
Preizkusite zdaj
 Output:value is: 10  

prenesite ta primer

Kako se vgrajene opombe uporabljajo v resničnem scenariju?

V resničnem scenariju mora programer Java uporabiti samo opombo. Ni mu treba ustvariti opombe in dostopati do nje. Izdelavo in dostop do opombe izvaja ponudnik implementacije. V imenu opombe prevajalnik java ali JVM izvede nekaj dodatnih operacij.


@Podedovano

Opombe privzeto niso podedovane v podrazrede. Opomba @Inherited označuje opombo, ki bo podedovana podrazredom.

 @Inherited @interface ForEveryone { }//Now it will be available to subclass also @interface ForEveryone { } class Superclass{} class Subclass extends Superclass{}  

@Dokumentirano

@Documented Označuje opombo za vključitev v dokumentacijo.