logo

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.

java ničelno preverjanje
 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.

v redu
 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.

najlepši nasmeh

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.

podatkovno rudarjenje
 @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 elementovKje je mogoče uporabiti opombo
VRSTArazred, vmesnik ali naštevanje
POLJEpolja
METODAmetode
KONSTRUKTORkonstruktorji
LOCAL_VARIABLElokalne spremenljivke
ANNOTATION_TYPEvrsta opombe
PARAMETERparameter

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.

RetentionPolicyRazpoložljivost
RetentionPolicy.SOURCEse nanaša na izvorno kodo, zavrženo med prevajanjem. Ne bo na voljo v prevedenem razredu.
RetentionPolicy.CLASSse nanaša na datoteko .class, ki je na voljo prevajalniku java, ne pa tudi JVM. Vključen je v datoteko razreda.
RetentionPolicy.RUNTIMEse 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.