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.
- Metoda ne sme imeti klavzul o vrženju
- Metoda mora vrniti eno od naslednjega: primitivne podatkovne tipe, niz, razred, enum ali niz teh podatkovnih tipov.
- Metoda ne sme imeti nobenega parametra.
- Tik pred ključno besedo vmesnika moramo priložiti @, da definiramo opombo.
- Metodi lahko dodeli privzeto vrednost.
Vrste opomb
Obstajajo tri vrste opomb.
- Opomba markerja
- Opomba z eno vrednostjo
- Opomba z več vrednostmi
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 ''; String value3() default 'xyz'; }
Kako uporabiti opombo z več vrednostmi
Oglejmo si kodo za uporabo opombe z več vrednostmi.
podatkovno rudarjenje
@MyAnnotation(value1=10,value2='Arun Kumar',value3='Ghaziabad')
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('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()); }}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.