"Bună, Amigo!"

— Bună, Rishi.

„Astăzi vă voi face o introducere mai profundă a adnotărilor”.

„După cum probabil știți deja, adnotările sunt cuvinte speciale care pot fi puse lângă clase, câmpuri, metode și variabile.”

— Da. Îi întâlnesc foarte des.

„Uneori sunt numite și metadate . Scopul lor principal este de a stoca informații suplimentare specifice despre metode, câmpuri și clase.”

— Pentru cine o păstrează?

— Asta e o întrebare foarte bună.

„Oamenii scriu adnotări, ceea ce înseamnă că cineva trebuie să aibă nevoie de ele”.

„Adnotările vă permit să stocați informații suplimentare despre cod și elementele programului, dar, în mod oficial, acestea nu fac parte din cod.”

„Adnotările pot fi folosite pentru a genera XML, pentru a determina dacă o metodă este depreciată, pentru a urmări erorile etc.”

„Iată un exemplu de adnotări în cod:”

Exemplu
@CatInfo(manager=Catmanager.class, unique=true)
class Cat
{
 @Name("Missy")
 private String name;

 @SuppressWarnings(value = "unchecked")
 void getUniqueCatName()
 {

 }
}

„După cum puteți vedea, datele pot fi stocate în adnotări.”

„Dacă o adnotare are un singur câmp numit valoare , atunci numele câmpului poate fi omis:”

Exemplu
@SuppressWarnings("unchecked")
void getUniqueCatName()
{

}

„Dacă nu există parametri în paranteze, atunci pot fi, de asemenea, omisi:”

Exemplu
@Override
void getUniqueCatName()
{

}

„Este foarte ușor să creezi propria ta adnotare. Declararea unei adnotări este aproape identică cu declararea unei interfețe.”

Exemplu
@interface CatManager
{
 Class manager();
 boolean unique();
 String name() default "Unknown Cat";
}

„Există doar câteva diferențe”.

„În primul rând, puneți un semn «@» înainte de interfața cuvântului .”

„În al doilea rând, o adnotare poate avea valori implicite. Folosiți cuvântul implicit pentru a seta valori implicite . Vezi exemplul de mai sus. Acești parametri sunt opționali și pot fi omisi atunci când adăugați adnotări.”

"Ah. Totul este mai ușor decât credeam. Și le-am evitat așa cum Robo-Diavolul evită apa sfințită. Nu este foarte plăcut când codul are o mulțime de lucruri pe care nu le înțelegi pe deplin."

„Oh, ce bine că mi-ai reamintit – vreau să-ți spun mai multe despre adnotările folosite de compilator.”

"Există doar 3 astfel de adnotări. Ei bine, trei până acum."

@Depreciat.

„Puteți adnota o clasă sau o metodă cu @Deprecated. Acest lucru va determina compilatorul să emită un avertisment (un avertisment nu este o eroare), iar IntelliJ IDEA va afișa această metodă ca text barat. Ceva de genul acesta  :

Exemplu
Date date = new Date();
int year = date.getYear();

@Trece peste.

„Este considerată cea mai bună practică să adăugați adnotarea @Override la metodele pe care le modificați.”

"Pentru ce este asta? IDEA nu arată deja dacă o metodă este sau nu suprascrisă?"

„În primul rând, există IDEA și apoi este sintaxa Java”.

„Și în al doilea rând, ipotetic, ați putea avea o situație în care metoda unei clase de bază este redenumită fără o modificare corespunzătoare a numelui metodei din subclasă. Programul nu va funcționa așa cum se aștepta, dar nimeni nu va observa. Această adnotare a fost inventată pentru a preveniți aceste situații să se întâmple:"

Exemplu
@Override
void getUniqueCatName()
{

}

@SuppressWarnings.

„Uneori, compilatorul afișează o mulțime de avertismente. Și uneori știm despre „probleme” și alegem în mod deliberat să folosim codul corespunzător care le creează. Puteți folosi această adnotare pentru a ascunde unele dintre aceste avertismente.”

„Un programator poate folosi adnotarea @SuppressWarnings pentru a spune compilatorului: „Nu afișați un avertisment pentru această eroare – este intenționat.” De exemplu:"

Exemplu
@SuppressWarnings("unchecked")
void getUniqueCatName()
{

}

"Am înţeles."

"Devin puțin obosit. O să-mi ud gâtul uscat. Să continuăm după o pauză, bine?"

"Sigur."