logo

Java megjegyzések

Jáva Annotáció egy címke, amely a metaadatokat azaz osztályokkal, interfésszel, metódusokkal vagy mezőkkel csatolva, hogy jelezzen néhány további információt, amelyet a java fordító és a JVM használhat.

A Java nyelvű megjegyzések további információk nyújtására szolgálnak, így ez egy alternatív lehetőség az XML és Java marker interfészek számára.

Először megtanulunk néhány beépített annotációt, majd folytatjuk az egyéni megjegyzések létrehozását és használatát.


Beépített Java megjegyzések

A Java-ban számos beépített megjegyzés található. Egyes megjegyzések Java kódra, mások pedig más megjegyzésekre vonatkoznak.

A Java kódban használt beépített Java megjegyzések

  • @Felülbírálás
  • @SuppressWarnings
  • @Elavult

Más megjegyzésekben használt beépített Java-jegyzetek

  • @Cél
  • @Visszatartás
  • @Örökölt
  • @Dokumentált

A beépített megjegyzések megértése

Először ismerjük meg a beépített megjegyzéseket.

@Felülbírálás

Az @Override annotáció biztosítja, hogy az alosztály metódus felülírja a szülő osztály metódusát. Ha nem így van, fordítási időhiba lép fel.

Néha elkövetünk ostoba hibákat, például helyesírási hibákat stb. Ezért jobb, ha megjelöljük az @Override megjegyzést, amely biztosítékot nyújt a módszer felülbírálására.

névkonvenció java
 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(); }} 
Tesztelje most
 Output:Comple Time Error 

@SuppressWarnings

@SuppressWarnings megjegyzés: a fordító által kiadott figyelmeztetések letiltására szolgál.

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

Ha eltávolítja a @SuppressWarnings('unchecked') megjegyzést, a fordításkor figyelmeztetés jelenik meg, mert nem általános gyűjteményt használunk.


@Elavult

@Elavult megjegyzés jelzi, hogy ez a módszer elavult, ezért a fordító figyelmeztetést nyomtat. Tájékoztatja a felhasználót, hogy a jövőbeni verziókban eltávolítható. Ezért jobb, ha nem használ ilyen módszereket.

smtp internet protokoll
 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(); }} 
Tesztelje most

Összeállítási időben:

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

Futásidőben:

 hello n 

Java egyéni megjegyzések

Java Egyéni megjegyzések vagy Java A felhasználó által definiált megjegyzések könnyen létrehozhatók és használhatók. A @felület elemet a megjegyzés deklarálására használják. Például:

 @interface MyAnnotation{} 

Itt a MyAnnotation az egyéni megjegyzés neve.

Ne felejtse el a java egyéni annotáció aláírását

Néhány pontra a programozónak emlékeznie kell.

  1. A metódus nem tartalmazhat dobási záradékot
  2. A metódusnak a következők egyikét kell visszaadnia: primitív adattípusok, karakterlánc, osztály, enum vagy ezen adattípusok tömbje.
  3. A metódusnak nem lehet paramétere.
  4. A @ jelet közvetlenül az interfész kulcsszó elé kell csatolnunk az annotáció meghatározásához.
  5. Alapértelmezett értéket rendelhet a metódushoz.

Az annotáció típusai

Háromféle megjegyzés létezik.

  1. Marker Annotáció
  2. Egyértékű megjegyzés
  3. Többértékű megjegyzés
Java megjegyzéstípusok

1) Marker Annotation

A metódus nélküli annotációt marker annotációnak nevezzük. Például:

 @interface MyAnnotation{} 

Az @Override és @Deprecated jelölő megjegyzések.


2) Egyértékű megjegyzés

Az egyetlen módszerrel rendelkező annotációt egyértékű annotációnak nevezzük. Például:

 @interface MyAnnotation{ int value(); } 

Az alapértelmezett értéket is megadhatjuk. Például:

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

Az egyértékű megjegyzés alkalmazása

Lássuk az egyértékű annotáció alkalmazásának kódját.

 @MyAnnotation(value=10) 

Az érték bármi lehet.


3) Többértékű megjegyzés

Az egynél több módszerrel rendelkező annotációt többértékű annotációnak nevezzük. Például:

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

Az alapértelmezett értéket is megadhatjuk. Például:

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

A többértékű megjegyzés alkalmazása

Lássuk a kódot a többértékű annotáció alkalmazásához.

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

Beépített megjegyzések, amelyeket a java egyéni megjegyzéseiben használnak

  • @Cél
  • @Visszatartás
  • @Örökölt
  • @Dokumentált

@Cél

@Cél A címke annak meghatározására szolgál, hogy milyen típusú annotációt használjon.

A java.lang.annotáció. ElementType Az enum számos konstanst deklarál, hogy meghatározza az elem típusát, ahol a megjegyzést alkalmazni kell, például TYPE, METHOD, FIELD stb. Lássuk az ElementType enum konstansait:

ElemtípusokAhol a megjegyzés alkalmazható
TÍPUSosztály, felület vagy felsorolás
TERÜLETmezőket
MÓDSZERmód
KONSTRUKTŐRkivitelezők
LOCAL_VARIABLEhelyi változók
ANNOTATION_TYPEmegjegyzés típusa
PARAMÉTERparaméter

Példa egy osztály megjegyzésének megadására

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

Példa annotáció megadására egy osztályhoz, metódusokhoz vagy mezőkhöz

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

@Visszatartás

@Visszatartás Az annotation segítségével meghatározható, hogy milyen szintű annotáció legyen elérhető.

Megtartási politikaElérhetőség
RetentionPolicy.FORRÁSa forráskódra vonatkozik, amelyet a fordítás során eldobtak. Az összeállított osztályban nem lesz elérhető.
RetentionPolicy.CLASSa .class fájlra utal, amely elérhető a java fordító számára, de nem a JVM számára. Ez benne van az osztály fájljában.
RetentionPolicy.RUNTIMEa futási időre vonatkozik, amely elérhető a java fordító és a JVM számára.

Példa a RetentionPolicy megadására

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

Példa egyéni annotációra: megjegyzés létrehozása, alkalmazása és elérése

Lássuk az annotáció létrehozásának, alkalmazásának és elérésének egyszerű példáját.

Fájl: Test.java

szegmentációs hiba mag kidobva
 //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()); }} 
Tesztelje most
 Output:value is: 10 

töltse le ezt a példát

Hogyan használják a beépített megjegyzéseket valós forgatókönyvben?

Valós forgatókönyv esetén a java programozónak csak megjegyzést kell alkalmaznia. Nem kell megjegyzést létrehoznia és hozzáférnie. A kommentár létrehozását és elérését az implementációs szolgáltató végzi. Az annotáció nevében a java fordító vagy a JVM további műveleteket hajt végre.


@Örökölt

Alapértelmezés szerint a megjegyzések nem öröklődnek az alosztályokhoz. Az @Inherited annotáció az alosztályokhoz örökölendő megjegyzést jelöli.

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

@Dokumentált

A @Documented megjelöli a megjegyzést a dokumentációba való felvételhez.