logo

Java komentarai

Java Anotacija yra žyma, nurodanti metaduomenys y., pridedama su klase, sąsaja, metodais ar laukais, kad būtų nurodyta papildoma informacija, kurią gali naudoti „Java“ kompiliatorius ir JVM.

„Java“ komentarai naudojami papildomai informacijai pateikti, todėl tai yra alternatyvi XML ir „Java“ žymeklio sąsajų parinktis.

Pirmiausia išmoksime keletą integruotų komentarų, tada pereisime prie pasirinktinių komentarų kūrimo ir naudojimo.


Integruotos Java komentarai

„Java“ yra keletas integruotų komentarų. Kai kurie komentarai taikomi „Java“ kodui, o kai kurie – kitiems komentarams.

Integruotos Java komentarai, naudojami Java kode

  • @Nepaisyti
  • @SuppressWarnings
  • @Nebenaudojama

Integruotos Java komentarai, naudojami kituose komentaruose

  • @Target
  • @Sulaikymas
  • @Paveldėtas
  • @Dokumentuota

Integruotų komentarų supratimas

Pirmiausia supraskime įtaisytuosius komentarus.

@Nepaisyti

@Override anotacija užtikrina, kad poklasio metodas nepaiso pagrindinės klasės metodo. Jei taip nėra, atsiranda kompiliavimo laiko klaida.

Kartais darome kvailas klaidas, pvz., rašybos klaidas ir pan. Taigi, geriau pažymėti @Override anotaciją, kuri užtikrina, kad metodas yra nepaisomas.

Python programa dvejetainei paieškai
 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(); }} 
Išbandykite dabar
 Output:Comple Time Error 

@SuppressWarnings

@SuppressWarnings anotacija: naudojama kompiliatoriaus siunčiamiems įspėjimams slopinti.

 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); }} 
Išbandykite dabar
 Now no warning at compile time. 

Jei pašalinsite @SuppressWarnings('nepažymėta') anotaciją, kompiliavimo metu bus rodomas įspėjimas, nes naudojame nebendrą rinkinį.


@Nebenaudojama

@Nebenaudojama anotacija rodo, kad šis metodas yra pasenęs, todėl kompiliatorius spausdina įspėjimą. Jis informuoja vartotoją, kad jis gali būti pašalintas būsimose versijose. Taigi, tokių metodų geriau nenaudoti.

java matematikos klasė
 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(); }} 
Išbandykite dabar

Kompiliavimo metu:

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

Vykdymo metu:

 hello n 

Java tinkinti komentarai

Java tinkinti komentarai arba Java Vartotojo apibrėžtas anotacijas lengva kurti ir naudoti. The @sąsaja elementas naudojamas anotacijai deklaruoti. Pavyzdžiui:

 @interface MyAnnotation{} 

Čia MyAnnotation yra pasirinktinis komentaro pavadinimas.

Taškai, kuriuos reikia atsiminti dėl „Java“ tinkintos anotacijos parašo

Yra keletas punktų, kuriuos programuotojas turėtų atsiminti.

  1. Metodas neturėtų turėti jokių metimo sąlygų
  2. Metodas turi grąžinti vieną iš šių: primityvūs duomenų tipai, eilutė, klasė, enum arba šių duomenų tipų masyvas.
  3. Metodas neturi turėti jokių parametrų.
  4. Norėdami apibrėžti anotaciją, prieš pat sąsajos raktinį žodį turėtume pridėti @.
  5. Jis gali priskirti metodui numatytąją reikšmę.

Anotacijos tipai

Yra trijų tipų anotacijos.

  1. Žymeklio anotacija
  2. Vienos vertės anotacija
  3. Kelių reikšmių anotacija
Java komentarų tipai

1) Žymeklio anotacija

Anotacija, kuri neturi metodo, vadinama žymeklio anotacija. Pavyzdžiui:

 @interface MyAnnotation{} 

@Override ir @Deprecated yra žymeklio komentarai.


2) Vienos vertės anotacija

Anotacija, turinti vieną metodą, vadinama vienos reikšmės anotacija. Pavyzdžiui:

 @interface MyAnnotation{ int value(); } 

Taip pat galime pateikti numatytąją vertę. Pavyzdžiui:

žemės riešutai vs žemės riešutai
 @interface MyAnnotation{ int value() default 0; } 

Kaip taikyti vienos vertės anotaciją

Pažiūrėkime, kaip taikyti vienos vertės anotaciją.

 @MyAnnotation(value=10) 

Vertė gali būti bet kokia.


3) Daugiareikšmė anotacija

Komentaras, turintis daugiau nei vieną metodą, vadinamas kelių reikšmių anotacija. Pavyzdžiui:

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

Taip pat galime pateikti numatytąją vertę. Pavyzdžiui:

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

Kaip taikyti kelių reikšmių anotaciją

Pažiūrėkime kodą, kaip taikyti kelių reikšmių anotaciją.

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

Integruoti komentarai, naudojami tinkintuose komentaruose Java

  • @Target
  • @Sulaikymas
  • @Paveldėtas
  • @Dokumentuota

@Target

@Target žyma naudojama norint nurodyti, kokio tipo anotacija naudojama.

java.lang.anotacija. Elemento tipas enum deklaruoja daug konstantų, kad nurodytų elemento tipą, kuriam turi būti taikoma anotacija, pvz., TYPE, METHOD, FIELD ir kt. Pažiūrėkime ElementType enum konstantas:

Elementų tipaiKur galima pritaikyti anotaciją
TIPASklasė, sąsaja ar sąrašas
LAUKASlaukai
METODASmetodus
KONSTRUKTORIAUSkonstruktoriai
LOCAL_VARIABLEvietiniai kintamieji
ANNOTATION_TYPEanotacijos tipas
PARAMETRASparametras

Pavyzdys, kaip nurodyti anotaciją klasei

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

Pavyzdys, skirtas nurodyti klasės, metodų ar laukų anotaciją

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

@Sulaikymas

@Sulaikymas anotacija naudojama norint nurodyti, kokio lygio anotacija bus prieinama.

Išlaikymo politikaPrieinamumas
RetentionPolicy.ŠALTINISnurodo šaltinio kodą, kuris buvo atmestas kompiliavimo metu. Jis nebus pasiekiamas sudarytoje klasėje.
RetentionPolicy.CLASSnurodo .class failą, prieinamą java kompiliatoriui, bet ne JVM . Jis įtrauktas į klasės failą.
RetentionPolicy.RUNTIMEnurodo vykdymo laiką, prieinamą java kompiliatoriui ir JVM .

Pavyzdys, nurodantis RetentionPolicy

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

Pasirinktinės anotacijos pavyzdys: komentaro kūrimas, pritaikymas ir prieiga

Pažiūrėkime paprastą anotacijos kūrimo, taikymo ir prieigos pavyzdį.

pakeisti katalogo pavadinimą linux

Failas: 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()); }} 
Išbandykite dabar
 Output:value is: 10 

atsisiųskite šį pavyzdį

Kaip įtaisytieji komentarai naudojami realiame scenarijuje?

Realiame scenarijuje „Java“ programuotojui tereikia pritaikyti anotaciją. Jam/jai nereikia kurti ir pasiekti anotacijos. Anotacijos kūrimą ir prieigą atlieka diegimo teikėjas. Anotacijos vardu java kompiliatorius arba JVM atlieka keletą papildomų operacijų.


@Paveldėtas

Pagal numatytuosius nustatymus komentarai nėra paveldimi poklasiams. @Paveldėta anotacija žymi anotaciją, kuri bus paveldima poklasiams.

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

@Dokumentuota

@Documented pažymi anotaciją, kurią reikia įtraukti į dokumentaciją.