logo

Java-merkinnät

Java Annotaatio on tagi, joka edustaa metatiedot eli liitetty luokkaan, käyttöliittymään, menetelmiin tai kenttään osoittamaan lisätietoa, jota Java-kääntäjä ja JVM voivat käyttää.

Java-merkintöjä käytetään lisätietojen antamiseen, joten se on vaihtoehtoinen vaihtoehto XML- ja Java-merkkirajapinnoille.

Ensin opimme joitakin sisäänrakennettuja merkintöjä, sitten siirrymme mukautettujen merkintöjen luomiseen ja käyttämiseen.


Sisäänrakennetut Java-merkinnät

Javassa on useita sisäänrakennettuja huomautuksia. Joitakin merkintöjä käytetään Java-koodiin ja toisia muihin merkintöihin.

Sisäänrakennetut Java-merkinnät, joita käytetään Java-koodissa

  • @Ohittaa
  • @SuppressWarnings
  • @Käytöstä poistettu

Sisäänrakennetut Java-merkinnät, joita käytetään muissa merkinnöissä

  • @Kohde
  • @Säilyttäminen
  • @peritty
  • @Dokumentoitu

Sisäänrakennettujen huomautusten ymmärtäminen

Ymmärretään ensin sisäänrakennetut merkinnät.

@Ohittaa

@Override-merkintä varmistaa, että alaluokkamenetelmä ohittaa emoluokan menetelmän. Jos näin ei ole, tapahtuu käännösaikavirhe.

Joskus teemme typeriä virheitä, kuten kirjoitusvirheitä jne. Joten on parempi merkitä @Override-merkintä, joka antaa varmuuden siitä, että menetelmä ohitetaan.

keskimmäinen css-painike
 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(); }} 
Testaa nyt
 Output:Comple Time Error 

@SuppressWarnings

@SuppressWarnings-merkintä: käytetään estämään kääntäjän antamat varoitukset.

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

Jos poistat @SuppressWarnings('unchecked') -merkinnän, se näyttää varoituksen käännöshetkellä, koska käytämme ei-yleistä kokoelmaa.


@Käytöstä poistettu

@Vähentynyt merkintä merkitsee, että tämä menetelmä on vanhentunut, joten kääntäjä tulostaa varoituksen. Se ilmoittaa käyttäjälle, että se voidaan poistaa tulevissa versioissa. Joten on parempi olla käyttämättä tällaisia ​​​​menetelmiä.

linkitetty lista java
 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(); }} 
Testaa nyt

Kokoonpanoaikana:

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

Ajon aikana:

 hello n 

Java mukautetut huomautukset

Java mukautetut huomautukset tai Java Käyttäjän määrittämiä huomautuksia on helppo luoda ja käyttää. The @käyttöliittymä elementtiä käytetään huomautuksen ilmoittamiseen. Esimerkiksi:

 @interface MyAnnotation{} 

Tässä MyAnnotation on mukautetun merkinnän nimi.

Muistettava java-merkintäallekirjoitus

On muutamia kohtia, jotka ohjelmoijan tulisi muistaa.

  1. Menetelmässä ei saa olla heittolausekkeita
  2. Menetelmän tulee palauttaa jokin seuraavista: primitiiviset tietotyypit, merkkijono, luokka, enum tai näiden tietotyyppien joukko.
  3. Menetelmällä ei saa olla mitään parametria.
  4. Meidän tulee liittää @ juuri ennen käyttöliittymän avainsanaa merkinnän määrittelemiseksi.
  5. Se voi määrittää menetelmälle oletusarvon.

Annotaatiotyypit

Merkintöjä on kolmenlaisia.

  1. Merkin huomautus
  2. Yksiarvoinen huomautus
  3. Moniarvoinen huomautus
Java-merkintätyypit

1) Merkintämerkintä

Annotaatiota, jolla ei ole menetelmää, kutsutaan merkkimerkintäksi. Esimerkiksi:

 @interface MyAnnotation{} 

@Override ja @Deprecated ovat merkkimerkintöjä.

merkkijono alimerkkijono java

2) Yksiarvoinen huomautus

Annotaatiota, jolla on yksi menetelmä, kutsutaan yksiarvoiseksi annotaatioksi. Esimerkiksi:

 @interface MyAnnotation{ int value(); } 

Voimme tarjota myös oletusarvon. Esimerkiksi:

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

Yhden arvon merkinnän käyttäminen

Katsotaanpa koodi yhden arvon merkinnän käyttämiseksi.

 @MyAnnotation(value=10) 

Arvo voi olla mikä tahansa.


3) Moniarvoinen huomautus

Huomautusta, jolla on useampi kuin yksi menetelmä, kutsutaan moniarvoiseksi huomautukseksi. Esimerkiksi:

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

Voimme tarjota myös oletusarvon. Esimerkiksi:

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

Kuinka käyttää moniarvoista huomautusta

Katsotaanpa koodia moniarvoisen huomautuksen käyttämiseksi.

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

Sisäänrakennetut merkinnät, joita käytetään mukautetuissa merkinnöissä javassa

  • @Kohde
  • @Säilyttäminen
  • @peritty
  • @Dokumentoitu

@Kohde

@Kohde -tunnistetta käytetään määrittämään, missä tyypissä huomautusta käytetään.

lista java

java.lang.-merkintä. ElementType enum ilmoittaa useita vakioita määrittääkseen elementin tyypin, johon huomautuksia käytetään, kuten TYPE, METHOD, FIELD jne. Katsotaanpa ElementType enumin vakiot:

ElementtityypitMissä huomautusta voidaan käyttää
TYYPPIluokka, käyttöliittymä tai luettelo
ALAkentät
MENETELMÄmenetelmiä
RAKENTAJArakentajat
LOCAL_VARIABLEpaikalliset muuttujat
ANNOTATION_TYPEhuomautuksen tyyppi
PARAMETRIparametri

Esimerkki luokan merkinnän määrittämisestä

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

Esimerkki luokan, menetelmien tai kenttien huomautuksen määrittämisestä

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

@Säilyttäminen

@Säilyttäminen annotaatiota käytetään määrittämään, mille tasolle merkintä on saatavilla.

SäilytyskäytäntöSaatavuus
RetentionPolicy.SOURCEviittaa lähdekoodiin, joka hylätään kääntämisen aikana. Se ei ole saatavilla käännetyllä luokalla.
RetentionPolicy.CLASSviittaa .class-tiedostoon, joka on saatavilla java-kääntäjälle, mutta ei JVM:lle. Se sisältyy luokkatiedostoon.
RetentionPolicy.RUNTIMEviittaa java-kääntäjän ja JVM:n käytettävissä olevaan suoritusaikaan.

Esimerkki RetentionPolicyn määrittämisestä

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

Esimerkki mukautetusta merkinnästä: merkinnän luominen, käyttäminen ja käyttö

Katsotaanpa yksinkertainen esimerkki merkintöjen luomisesta, käyttämisestä ja käyttämisestä.

Tiedosto: 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()); }} 
Testaa nyt
 Output:value is: 10 

lataa tämä esimerkki

Kuinka sisäänrakennettuja merkintöjä käytetään todellisessa skenaariossa?

Todellisessa skenaariossa java-ohjelmoijan tarvitsee vain käyttää huomautuksia. Hänen ei tarvitse luoda huomautusta ja käyttää sitä. Toteutuksen tarjoaja suorittaa huomautuksen luomisen ja käyttämisen. Annotation puolesta java-kääntäjä tai JVM suorittaa joitain lisätoimintoja.


@peritty

Oletusarvoisesti huomautuksia ei peritty alaluokille. @Peritty-merkintä merkitsee alaluokkiin perittävän huomautuksen.

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

@Dokumentoitu

@Documented Merkitsee huomautuksen dokumentaatioon sisällytettäväksi.