Adnotare (Java)
Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de
versiunea revizuită pe 11 decembrie 2021; verificările necesită
3 modificări .
O adnotare Java este o formă specială de metadate sintactice în limbajul Java care poate fi adăugată la codul sursă .
Adnotările sunt folosite pentru analiza codului, compilare sau execuție . Pachete adnotate, clase, metode, variabile și parametri.
Arată ca @ИмяАннотации, precedând definirea unei variabile, a unui parametru, a unei metode, a unei clase, a unui pachet.
Aplicație
Adnotarea îndeplinește următoarele funcții:
- ofera informatiile necesare pentru compilator / interpret ;
- oferă informații diverselor instrumente pentru generarea altor coduri, configurații etc.;
- poate fi folosit în timpul rulării pentru a prelua date prin reflectare;
Adnotări inline
Adnotări aplicate codului sursă:
- @Override - adnotare marker care poate fi aplicată numai metodelor. O metodă adnotată cu @Override trebuie să suprascrie o metodă super-clasă. @Override - verifică dacă o metodă este suprascrisă. Aruncă o eroare de compilare/interpretare dacă metoda nu este găsită în clasa sau interfața părinte;
- @Deprecated - constată că metoda este depășită și nu este recomandată pentru utilizare. Se presupune că din anumite motive această metodă este încă lăsată, dar va fi eliminată în versiunile viitoare. Afișează un avertisment de compilare dacă metoda este utilizată;
- @SuppressWarnings - instruiește compilatorul să suprime avertismentele de compilare definite în parametrii de adnotare;
- @SafeVarargs - indică faptul că nu este permis niciun comportament nesigur asociat cu parametrul număr variabil de argumente. Se aplică numai metodelor variadice și constructorilor declarați ca statici sau finali .
Adnotări aplicate altor adnotări:
- @Retention - determină cum poate fi stocată adnotarea marcată - în cod, în clasa compilată sau în timp ce codul rulează. Adnotarea @Retention vă permite să specificați ciclul de viață al adnotării: dacă va fi prezentă doar în codul sursă, în fișierul compilat, sau va fi vizibilă și în timpul execuției. Alegerea tipului potrivit depinde de modul în care doriți să utilizați adnotarea, de exemplu, pentru a genera ceva unul lângă altul din codurile sursă sau pentru a lovi clasa prin reflecție în timpul execuției .
- @Documented marchează o adnotare pentru a fi inclusă în documentație. Adnotarea @Documented indică faptul că adnotarea astfel marcată ar trebui adăugată la javadoc -ul câmpului/metodei și așa mai departe. De exemplu, o clasă adnotată fără @Documented ar arăta astfel: clasa publică TestClass extinde java . lang . Obiect
- @Target marchează o adnotare ca limitând elementele de adnotare care îi pot fi aplicate. Adnotarea @Target indică ce anume putem marca cu această adnotare, poate fi un câmp, o metodă, un tip etc.
- @Inherited - indică faptul că adnotarea poate fi extinsă prin subclase ale clasei adnotate. Adnotarea @Inherited marchează o adnotare care va fi moștenită de un copil al clasei marcate cu o astfel de adnotare.
Exemplu
clasă publică animal {
public nud vorbire () {
}
}
clasă publică Cat extins Animal {
@Override // Adnotare care indică faptul că această metodă înlocuiește metoda clasei părinte cu același nume
public void speak () {
System . afară . println ( "Miau." );
}
@Deprecated // Adnotare care indică faptul că această metodă este depreciată și va fi eliminată în curând
public boolean soundsGood () {
return true ;
}
}
Crearea de adnotări
O declarație de adnotare este similară cu o declarație de interfață folosind semnul @ în fața cuvântului cheie interface :
@
Mâncare alimentară comestibilă = mâncare nouă ();
public @interface Edible {
// creează-ți propria adnotare
}
Adnotările personalizate pot include diverse valori, care sunt descrise ca metode de adnotare. Fiecare declarație de metodă definește un element de adnotare. Declarația metodei nu trebuie să includă niciun argument sau instrucțiuni throws. Tipul returnat trebuie să fie unul dintre: un tip primitiv , un șir , o clasă , un tip enumerat și o matrice care conține tipul de date listat mai devreme. Metodele pot avea valori implicite.
@Edible ( true ) // atribuie valoare adevărată alimentelor comestibile
Food = new Food ( );
public @interface Comestibil {
boolean comestibil () implicit fals ; // implicit comestibil va fi fals
}
public @interface Autor {
String prenume ();
String prenume ();
}
@Author ( first_name = "James" , last_name = "Gosling" )
Carte de carte = Carte nouă ();
// O adnotare poate fi, de asemenea, adnotată pentru a-și defini domeniul de aplicare
@Target ({ ElementType . METHOD })
public @interface SomeAnnotation {}
clasă publică SomeClass {
@SomeAnnotation
private void doSomething (){}
}
Istorie
Inițial, platforma Java avea un mecanism care a precedat mecanismul de adnotare, cum ar fi modificatorul tranzitoriu sau eticheta @Deprecated . În septembrie 2002, JSR-175 a fost prezentat comunității Java, descriind punctele principale despre adnotări. A fost aprobat în 2004. Adnotările au devenit disponibile în limba însăși începând cu versiunea 1.5 a JDK și sunt descrise în JSR-269. În versiunea 1.6, adnotările au fost integrate în compilatorul javac .
Link -uri