Annotáció (Java)
Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. december 11-én felülvizsgált
verziótól ; az ellenőrzések 3 szerkesztést igényelnek .
A Java annotáció a szintaktikai metaadatok speciális formája a Java nyelvben , amely hozzáadható a forráskódhoz .
Az annotációkat kódelemzésre, -összeállításra vagy -végrehajtásra használják . Annotált csomagok, osztályok, metódusok, változók és paraméterek.
Úgy néz ki @ИмяАннотации, mint egy változó, paraméter, metódus, osztály, csomag definíciója előtt.
Alkalmazás
Az annotáció a következő funkciókat látja el:
- megadja a szükséges információkat a fordító / tolmács számára ;
- információkat ad különféle eszközöknek más kódok, konfigurációk stb. generálásához;
- futásidőben használható adatok visszakeresésére tükrözés útján;
Soron belüli megjegyzések
A forráskódra alkalmazott megjegyzések:
- @Override - csak metódusokra alkalmazható marker annotáció. A @Override felirattal ellátott metódusnak felül kell írnia egy szuperosztályú metódust. @Override – ellenőrzi, hogy egy metódus felül van-e írva. Fordítási/értelmezési hibát dob, ha a metódus nem található a szülő osztályban vagy interfészben;
- @Deprecated - megjegyzi, hogy a módszer elavult, használata nem javasolt. Feltételezhető, hogy valamilyen oknál fogva ez a módszer továbbra is megmaradt, de a következő verziókban eltávolítják. Összeállítási figyelmeztetést ad, ha a módszert használják;
- @SuppressWarnings - utasítja a fordítót, hogy tiltsa le az annotációs paraméterekben meghatározott fordítási figyelmeztetéseket;
- @SafeVarargs - azt jelzi, hogy a változó számú argumentum paraméterhez kapcsolódó nem biztonságos viselkedés nem megengedett. Csak a statikusnak vagy véglegesnek deklarált variadic metódusokra és konstruktorokra vonatkozik .
Más megjegyzésekre alkalmazott megjegyzések:
- @Retention - meghatározza, hogy a megjelölt annotáció hogyan tárolható - a kódban, a lefordított osztályban vagy a kód futása közben. A @Retention annotáció lehetővé teszi az annotáció életciklusának megadását: hogy csak a forráskódban, a lefordított fájlban legyen jelen, vagy a végrehajtás során is látható legyen. A megfelelő típus kiválasztása attól függ, hogyan kívánja használni az annotációt, például valami egymás melletti forráskódból történő generálására, vagy a végrehajtás során történő tükröződésen keresztül az osztályra .
- @Documented megjegyzést jelöl a dokumentációba való felvételhez. A @Documented annotáció azt jelzi , hogy az így megjelölt megjegyzést hozzá kell adni a mező/módszer javadoc -jához, és így tovább. Például a @Documented nélkül kommentált osztály így nézne ki:public class A TestClass kiterjeszti a java -t . lang . Tárgy
- A @Target megjelöli a megjegyzést, hogy korlátozza, hogy mely megjegyzéselemek alkalmazhatók rá. A @Target annotáció azt jelzi, hogy pontosan mit jelölhetünk ezzel a megjegyzéssel, lehet mező, metódus, típus stb.
- @Örölt - azt jelzi, hogy a megjegyzés kiterjeszthető a jegyzett osztály alosztályaival. Az @Inherited annotáció olyan megjegyzést jelöl, amelyet az ilyen megjegyzéssel megjelölt osztály gyermeke örököl majd.
Példa
public class Animal {
nyilvános üres beszéd () {
}
}
public class Cat kiterjeszti Animal {
@Override // Megjegyzés, amely jelzi, hogy ez a metódus felülírja az azonos nevű szülőosztály metódusát
public void speak () {
System . ki . println ( "Miau." );
}
@Elavult // Feljegyzés, amely jelzi, hogy ez a módszer elavult, és hamarosan eltávolítjuk
public logikai hangokJó () {
return true ;
}
}
Annotációk létrehozása
Az annotációs deklaráció hasonló egy interfész-deklarációhoz, amely a kulcsszó interface előtt a @ jelet használja :
@Edible
Food food = új Élelmiszer ();
nyilvános @interface Ehető {
// saját megjegyzés létrehozása
}
Az egyéni megjegyzések különféle értékeket tartalmazhatnak, amelyeket annotációs módszerekként írunk le. Minden metódus deklarációja meghatároz egy annotációs elemet. A metódus deklarációja nem tartalmazhat argumentumokat vagy utasításokat throws. A visszatérési típusnak a következők egyikének kell lennie: primitív típus , karakterlánc , osztály , felsorolt típus és a korábban felsorolt adattípust tartalmazó tömb. A módszereknek lehetnek alapértelmezett értékei.
@Edible ( true ) // igaz érték hozzárendelése az ehető
élelmiszerhez Food food = new Food ();
public @interface Ehető {
logikai ehető () alapértelmezett false ; // alapértelmezés szerint az ehető hamis lesz
}
public @interface Author {
String keresztnév ();
Karakterlánc vezetéknév ();
}
@Szerző ( first_name = "James" , last_name = "Gosling" )
Book book = new Book ();
// A kommentárok hatókörének meghatározásához megjegyzésekkel is
elláthatók @Target ({ ElementType . METHOD })
public @interface SomeAnnotation {}
public class SomeClass {
@SomeAnnotation
private void doSomething (){}
}
Történelem
Eredetileg a Java platformnak volt egy mechanizmusa, amely megelőzte az annotációs mechanizmust, például az átmeneti módosító vagy a @Deprecated címke . 2002 szeptemberében a JSR-175-öt bemutatták a Java közösségnek, leírva a megjegyzések főbb pontjait. 2004-ben hagyták jóvá. Az annotációk magán a nyelven is elérhetőek a JDK 1.5-ös verziója óta, és leírásuk a JSR-269-ben található. Az 1.6-os verzióban a megjegyzéseket integrálták a javac fordítóba .
Linkek