Anotace (Java)
Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od
verze recenzované 11. prosince 2021; kontroly vyžadují
3 úpravy .
Java anotace je speciální forma syntaktických metadat v jazyce Java , která lze přidat do zdrojového kódu .
Anotace se používají pro analýzu kódu, kompilaci nebo provádění . Anotované balíčky, třídy, metody, proměnné a parametry.
Vypadá jako @ИмяАннотации, před definicí proměnné, parametru, metody, třídy, balíčku.
Aplikace
Anotace plní následující funkce:
- poskytuje potřebné informace pro překladače / překladače ;
- poskytuje informace různým nástrojům pro generování dalšího kódu, konfigurací atd.;
- lze použít za běhu k načtení dat prostřednictvím odrazu;
Inline anotace
Anotace použité na zdrojový kód:
- @Override - anotace značky, kterou lze použít pouze na metody. Metoda anotovaná @Override musí přepsat metodu supertřídy. @Override - zkontroluje, zda je metoda přepsána. Vyvolá chybu kompilace/interpretace, pokud metoda není nalezena v nadřazené třídě nebo rozhraní;
- @Deprecated - poznamenává, že metoda je zastaralá a nedoporučuje se ji používat. Předpokládá se, že z nějakého důvodu je tato metoda stále ponechána, ale v budoucích verzích bude odstraněna. Vyvolá upozornění na kompilaci, pokud je metoda použita;
- @SuppressWarnings - instruuje kompilátor, aby potlačil varování kompilace definovaná v parametrech anotace;
- @SafeVarargs - označuje, že není povoleno žádné nebezpečné chování spojené s proměnným počtem argumentů. Platí pouze pro variadické metody a konstruktory deklarované jako statické nebo konečné .
Poznámky použité na jiné anotace:
- @Retention - určuje, jak může být označená anotace uložena - v kódu, v kompilované třídě nebo za běhu kódu. Anotace @Retention umožňuje určit životní cyklus anotace: zda bude přítomna pouze ve zdrojovém kódu, v kompilovaném souboru, nebo bude viditelná i během provádění. Výběr správného typu závisí na tom, jak chcete anotaci použít, například ke generování něčeho vedle sebe ze zdrojových kódů nebo ke klepání na třídu odrazem během provádění .
- @Documented označí anotaci pro zahrnutí do dokumentace. Anotace @Documented označuje , že takto označená anotace by měla být přidána do javadoc pole/metody a tak dále. Například třída anotovaná bez @Documented by vypadala takto:public class TestClass rozšiřuje java . lang . Objekt
- @Target označí anotaci jako omezení, které prvky anotace na ni lze použít. Anotace @Target udává, co přesně můžeme touto anotací označit, může to být pole, metoda, typ atd.
- @Inherited - označuje, že anotace může být rozšířena o podtřídy anotované třídy. Anotace @Inherited označuje anotaci, kterou zdědí dítě třídy označené takovou anotací.
Příklad
public class Zvíře {
public void mluvit () {
}
}
public class Cat extends Animal {
@Override // Anotace označující, že tato metoda přepíše stejnojmennou metodu nadřazené třídy
public void speak () {
System . ven . println ( "Mňau." );
}
@Deprecated // Anotace označující, že tato metoda je zastaralá a bude brzy odstraněna
public boolean soundsGood () {
return true ;
}
}
Vytváření anotací
Deklarace anotace je podobná deklaraci rozhraní pomocí znaku @ před klíčovým slovem interface :
@Jedlé
jídlo jídlo = nové jídlo ();
public @interface Edible {
// vytvořte si vlastní anotaci
}
Vlastní anotace mohou obsahovat různé hodnoty, které jsou popsány jako metody anotací. Každá deklarace metody definuje prvek anotace. Deklarace metody nesmí obsahovat žádné argumenty ani instrukce throws. Návratový typ musí být jeden z: primitivní typ , řetězec , třída , výčtový typ a pole obsahující datový typ uvedený výše. Metody mohou mít výchozí hodnoty.
@Edible ( true ) // přiřadí skutečnou hodnotu jedlému
Food food = new Food ();
public @interface Jedlé {
booleovské jedlé () výchozí false ; // ve výchozím nastavení bude jedlé false
}
public @interface Autor {
Řetězec křestní_jméno ();
Řetězec příjmení ();
}
@Autor ( first_name = "James" , last_name = "Gosling" )
Kniha kniha = nová Kniha ();
// Anotace může být také anotována, aby se definoval její rozsah
@Target ({ ElementType . METHOD })
public @interface SomeAnnotation {}
public class SomeClass {
@SomeAnnotation
private void doSomething (){}
}
Historie
Původně měla platforma Java mechanismus, který předcházel anotačnímu mechanismu, jako je přechodný modifikátor nebo značka @Deprecated . V září 2002 byl JSR-175 představen Java komunitě, popisující hlavní body anotací. Byl schválen v roce 2004. Anotace jsou dostupné v samotném jazyce od verze 1.5 JDK a jsou popsány v JSR-269. Ve verzi 1.6 byly anotace integrovány do kompilátoru javac .
Odkazy