Înțelegerea adnotărilor Java – Tutorial Java @annotations

Publicat: 2019-10-22
Adnotări la nivel de pachet

Cum și unde sunt utilizate adnotările în Java?

O adnotare, în limbajul de programare Java, este o formă specială de metadate sintactice care poate fi adăugată la codul sursă Java.

Clasele, metodele, variabilele, parametrii și pachetele pot fi adnotate. Spre deosebire de etichetele Javadoc, adnotările Java pot fi reflectorizante prin faptul că pot fi încorporate în fișierele de clasă generate de compilator și pot fi reținute de VM Java pentru a fi recuperate în timpul execuției.

Este posibil să se creeze meta-adnotări din cele existente în Java, ceea ce face acest concept mai sofisticat.

Java definește un set de adnotări care sunt încorporate în limbaj.

Înțelegerea adnotărilor Java - Sfaturi Crunchify
Înțelegerea adnotărilor Java – Sfaturi Crunchify

Adnotări aplicate codului java:

  • @Override – Verifică dacă funcția este o suprascriere. Provoacă un avertisment de compilare dacă funcția nu este găsită într-una dintre clasele părinte.
  • @Deprecated – marchează funcția ca învechită. Provoacă un avertisment de compilare dacă funcția este utilizată.
  • @SuppressWarnings – Instruiește compilatorului să suprime avertismentele de timp de compilare specificate în parametrii de adnotare.

Adnotări aplicate altor adnotări:

  • @Retention – Specifică modul în care este stocată adnotarea marcată – fie numai în cod, compilată în clasă sau disponibilă în timpul execuției prin reflecție.
  • @Documentat – marchează o altă adnotare pentru a fi inclusă în documentație.
  • @Target – marchează o altă adnotare pentru a restricționa tipul de elemente java cărora li se poate aplica adnotarea.
  • @Inherited – marchează o altă adnotare pentru a fi moștenită în subclasele clasei adnotate (în mod implicit, adnotările nu sunt moștenite la subclase).

Să aruncăm o privire la acestea prin exemple de exemple:

1) @Override Adnotare:

Prezența acestuia indică compilatorului că metoda adnotată trebuie să suprascrie o metodă superclasă existentă.

Cel mai frecvent caz de utilizare pentru @Override este cu metodele Object :

Principalul motiv pentru care a fost creat @Override a fost acela de a face față unor erori de tipar simple.

De exemplu, o metodă declarată eronat ca

De fapt, nu este o înlocuire – numele metodei are toate literele mici , deci nu se potrivește exact cu numele metodei hashValue() . Cu toate acestea, se va compila perfect. O astfel de eroare este ușor de făcut și greu de prins, ceea ce este o combinație periculoasă. Utilizarea adnotării @Override vă împiedică să faceți astfel de erori.

Ar trebui să aveți obiceiul de a folosi @Override ori de câte ori suprascrieți o metodă superclasă.

Înțelegerea adnotărilor Java

2) @Adnotare depreciată:

Această adnotare indică faptul că elementul marcat este depreciat și nu mai trebuie utilizat. Compilatorul generează un avertisment ori de câte ori un program utilizează o metodă, o clasă sau un câmp cu adnotarea @Deprecated .

Când un element este depreciat, ar trebui să fie documentat și folosind eticheta Javadoc @deprecated , așa cum se arată în exemplul următor.

3) @SuppressWarnings Adnotare:

Spune-i compilatorului, te rog nu striga. Știu ce fac .

4) @Retention Adnotare:

Adnotarea de reținere indică unde și cât timp vor fi păstrate adnotările de acest tip.

Există trei valori:

  • RetentionPolicy.SOURCE — Adnotările cu acest tip vor fi reținute numai la nivel de sursă și vor fi ignorate de compilator.
  • RetentionPolicy.CLASS — Adnotările cu acest tip vor fi reținute de compilator în momentul compilării, dar vor fi ignorate de VM.
  • RetentionPolicy.RUNTIME — Adnotările cu acest tip vor fi reținute de VM, astfel încât să poată fi citite numai în timpul execuției.

5) @Adnotare documentată:

Acum încercați să rulați comanda Java Doc și vedeți rezultatul.

6) @Adnotare țintă:

Țintă indică ce element(e) de program pot fi adnotate utilizând instanțe de tipul de adnotare adnotat. Valoarea Target este unul dintre membrii enumerarii java.lang.annotation.ElementType :

  1. ANNOTATION_TYPE. Tipul de adnotare adnotat poate fi folosit pentru a adnota declarația tip adnotare.
  2. CONSTRUCTOR. Tipul de adnotare adnotat poate fi folosit pentru a adnota declarația constructorului.
  3. CAMP. Tipul de adnotare adnotat poate fi utilizat pentru a adnota declarația de câmp.
  4. LOCAL_VARIABLE. Tipul de adnotare adnotat poate fi utilizat pentru a adnota declarația variabilelor locale.
  5. METODĂ. Tipul de adnotare adnotat poate fi utilizat pentru a adnota declarația metodei.
  6. PACHET. Tipul de adnotare adnotat poate fi utilizat pentru adnotarea declarațiilor de pachet.
  7. PARAMETRU. Tipul de adnotare adnotat poate fi utilizat pentru adnotarea declarațiilor de parametri.
  8. TIP. Tipul de adnotare adnotat poate fi utilizat pentru adnotarea declarațiilor de tip.

7) @Adnotare moștenită:

Exact așa cum sună numele, un tip de adnotare @Inherited este moștenit de subclase de tip adnotat.

În acest exemplu, Superclass a fost adnotat în mod explicit atât cu @ForEveryone , cât și cu @JustForMe . Subclass nu a fost marcată explicit cu nici una; totuși, moștenește @ForEveryone deoarece acesta din urmă este adnotat cu @Inherited .

@JustForMe nu este adnotat, deci nu este moștenit de Subclass .

Iată adnotări la nivel de clasă

Adnotări la nivel de clasă