Adnotări în Java: tipuri, utilizări și exemple

Publicat: 2022-05-19

O adnotare într-un limbaj de programare precum Java se referă la metadatele sintactice care pot fi integrate cu codul sursă al Java. Diferiți factori, cum ar fi pachetele Java, variabilele, clasele, parametrii și metodele pot fi adnotați. Dezvoltatorii pot citi cu ușurință adnotările Java direct din fișierele sursă, la fel ca etichetele Javadoc.

Adnotările Java pot fi incluse și citite din fișierele de clasă Java de ieșire ale compilatorului Java. Acest lucru permite mașinii virtuale Java să mențină adnotări și să le citească printr-o reflecție în timpul execuției. În Java, este posibil să construiți meta-adnotări din cele existente.

Acestea sunt câteva elemente de bază ale adnotărilor în Java:

  1. Adnotările încep întotdeauna cu „@”. De exemplu: „@override”, „@target”, „@SuppressWarnings”, etc.
  2. Adnotările nu afectează comportamentul unui program compilat.
  3. Adnotările ajută la asocierea metadatelor la componentele programului, cum ar fi metode, clase, variabile etc.
  4. Adnotările nu sunt doar comentarii, deoarece pot afecta modul în care un program este procesat de compilator. Ele oferă informații suplimentare ale compilatorului despre program, dar nu fac parte din programul în sine. Prin urmare, aceste adnotări nu afectează execuția programului compilat.

Cuprins

Tipuri de adnotări în Java

1. Adnotări cu valoare unică

Adnotările cu o singură valoare permit doar o formă scurtă, deoarece conțin un singur membru. Membrului trebuie să primească o valoare după aplicarea adnotării. Cu toate acestea, numele adnotării nu trebuie specificat. Membrul trebuie să aibă o valoare dacă urmează să fie utilizată prescurtarea. De exemplu:

@TestAnnotation(„testare”);

2. Adnotări complete

Adnotările complete constau din diverse date, cum ar fi membri de date, valori, perechi și nume.

De exemplu:

@TestAnnotation (proprietar=”Rahul”, valoare=”Class Geeks”)

Învață cursuri de dezvoltare software online de la cele mai bune universități din lume. Câștigați programe Executive PG, programe avansate de certificat sau programe de master pentru a vă accelera cariera.

3. Adnotări repetate

Când o adnotare poate fi aplicată unor obiecte singulare de mai multe ori, este etichetată ca o adnotare repetată. Adnotările repetate sunt specificate cu eticheta @Repeatable așa cum este definită în pachetul java.lang.annotation. Câmpul său de valoare indică tipul de container al adnotării repetate.

Containerul este definit ca o adnotare cu un câmp de valoare care conține o matrice de adnotări repetate. Pentru a construi o adnotare repetată, creați mai întâi adnotarea containerului, apoi specificați tipul de adnotare ca intrare în adnotarea @Repeatable.

De exemplu:

// Program Java pentru a demonstra o adnotare repetabilă

// Importul claselor necesare

import java.lang.annotation.Adnotation;

import java.lang.annotation.Repeatable;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.reflect.Method;

// Faceți repetabilă adnotarea Words

@Retention(RetentionPolicy.RUNTIME)

@Repeatable(MyRepeatedAnnos.class)

@interfață Cuvinte

{

String word() implicit „Bună ziua”;

int value() implicit 0;

}

// Creați adnotare container

@Retention(RetentionPolicy.RUNTIME)

@interfață MyRepeatedAnnos

{

Cuvinte[] valoare();

}

clasă publică principală {

// Repetați cuvintele pe newMethod

@Cuvinte(cuvânt = „Primul”, valoare = 1)

@Cuvinte(cuvânt = „Al doilea”, valoare = 2)

public static void newMethod()

{

Main obj = new Main();

încerca {

Clasa<?> c = obj.getClass();

// Obține adnotarea pentru newMethod

Metoda m = c.getMethod(“newMethod”);

// Afișează adnotarea repetată

Adnotare anno

= m.getAnnotation(MyRepeatedAnnos.class);

System.out.println(anu);

}

captură (NoSuchMethodException e) {

System.out.println(e);

}

}

public static void main(String[] args) { newMethod(); }

}

Rezultatul final ar fi: @MyRepeatedAnnos(valoare={@Cuvinte(valoare=1, cuvânt=”Primul”), @Cuvinte(valoare=2, cuvânt=”Al doilea”)})

Explorați cursurile noastre populare de inginerie software

SL. Nu Programe de dezvoltare software
1 Master în Informatică de la LJMU și IIITB Programul de certificat de securitate cibernetică Caltech CTME
2 Bootcamp de dezvoltare completă Programul PG în Blockchain
3 Program Executive Postuniversitar în Dezvoltare Software - Specializare în DevOps Vezi toate cursurile de Inginerie software

3. Adnotări marker

Adnotările markerului sunt destinate doar declarației. Această adnotare nu conține niciun membru și nici nu există date în ea. Singurul său scop este de a menține o prezență ca adnotare. De exemplu: @Override.

4. Introduceți adnotări

Aceste adnotări pot fi folosite oriunde este folosit un tip. De exemplu, putem adnota tipul de returnare al unei metode. Adnotările de tip sunt etichetate cu adnotarea @Target.

Codul care poate ilustra adnotările de tip este:

// Importul claselor necesare

import java.lang.annotation.ElementType;

import java.lang.annotation.Target;

// Folosind adnotarea țintă pentru a adnota un tip

@Target(ElementType.TYPE_USE)

// Declararea unei adnotări de tip simplu

@interface TypeAnnoDemo{}

// Clasa principală

clasă publică GFG {

// Metoda driverului principal

public static void main(String[] args) {

// Adnotarea tipului unui șir

@TypeAnnoDemo String string = „Acest cod este adnotat cu o adnotare de tip”;

System.out.println(șir);

abc();

}

// Adnotarea tipului de returnare al unei funcții

static @TypeAnnoDemo int abc() {

System.out.println(„Tipul de returnare al acestei funcții este adnotat”);

returnează 0;

}

Exemple de adnotări predefinite

Există multe varietăți de adnotări predefinite pe care le-am menționat mai devreme. Să aruncăm o privire:

1. @Anulare

Această adnotare a markerului poate fi utilizată numai pentru metode. Orice metodă cu adnotarea @override trebuie să înlocuiască o altă metodă dintr-o superclasă. În caz contrar, se declanșează o eroare de compilare. Acest lucru se întâmplă deoarece trebuie să se asigure că superclasa este de fapt suprascrisă și nu doar supraîncărcată.

Codul care poate ilustra Adnotarea Override este:

// Clasa 1

clasa Baza

{

public void Display()

{

System.out.println(„Afișare de bază()”);

}

public static void main(Argumente șir[])

{

Baza t1 = new Derived();

t1.Display();

}

}

// Clasa 2

// Extinderea deasupra clasei

clasa Derivat extinde Baza

{

@Trece peste

public void Display()

{

System.out.println(„Afișare derivată()”);

}

}

2. @Target

Este menit să fie folosit doar ca adnotare la o altă adnotare. @Target acceptă un parametru, care trebuie să fie o constantă ElementType. Parametrul decide la ce declarații poate fi aplicat. Adnotarea @Target poate avea mai multe valori în loc de o singură valoare. Cu toate acestea, dacă trebuie declarate mai multe valori, atunci trebuie să fie sub formă de acolade, cum ar fi: @Target({ElementType.FIELD, ElementType.LOCAL_VARIABLE}).

Adnotarea @Retention poate fi folosită aici pentru a determina starea de păstrare a adnotării. Trei factori afectează o adnotare @Retention:

  • Sursa: compilatorul ignoră adnotările, deoarece acestea sunt de obicei păstrate la nivelul sursei.
  • Timp de execuție: este reținut în timpul execuției.
  • Clasă: adnotările rămân la compilare și nu sunt luate în considerare de programul Java.

3. @Moștenit

Această adnotare poate fi utilizată numai în scopuri de declarație și, prin urmare, afectează doar anumite declarații de clasă. O adnotare o poate înlocui pe cealaltă și își poate moșteni proprietățile. Astfel, superclasa poate fi verificată dacă adnotări specifice sunt absente din subclasă. Cu toate acestea, dacă adnotarea este prezentă, primește adnotarea @Inherited.

De exemplu:

// Clasa 1

clasa DeprecatedTest

{

@Depreciat

public void Display()

{

System.out.println(„Afișare de test învechit()”);

}

}

// Clasa 2

clasă publică SuppressWarningTest

{

// Dacă comentăm mai jos adnotarea, programul generează

// avertizare

@SuppressWarnings({„verificat”, „depreciere”})

public static void main(Argumente șir[])

{

DeprecatedTest d1 = new DeprecatedTest();

d1.Display();

}

}

Concluzie

Aici, am aflat despre adnotări în Java. Am aflat, de asemenea, despre tipurile de adnotări în Java și despre utilizările lor, care pot ajuta dezvoltatorii Java să creeze cu ușurință programe robuste și scalabile.

Dacă doriți să aflați mai multe despre conceptele Java, certificarea upGrad PG legată de locuri de muncă în inginerie software este cel mai bun pariu pentru a obține o înțelegere cuprinzătoare a limbajelor de programare precum Java, HTML, JS, precum și a altor instrumente și biblioteci de dezvoltare software.

Programul este conceput pentru studenții din ultimul an sau absolvenții șomeri care doresc să își asigure poziții de nivel de intrare în domeniu. Cursul de 5 luni acoperă specializarea în MERN/Cloud-Native și îi ajută pe studenți să construiască un portofoliu de top, expunându-i la 5 proiecte practice.

Deci, nu așteptați. Mergeți la upGrad și rezervați-vă locul astăzi!

Ce sunt adnotările @jsonproperty?

Adnotările Jsonproperty permit dezvoltatorilor să mapeze cheile JSON cu numele proprietăților în timpul serializării și deserializării. Pe baza setărilor implicite ale Java, cheile sunt mapate la câmpurile POJO în timpul serializării. Adnotările Json ajută la înlocuirea acestei funcționalități implicite prin utilizarea atributelor șir care indică numele mapat.

Ce sunt adnotările de hibernare?

Adnotările Hibernate sunt o altă tehnică de specificare a metadatelor la maparea obiectului și a tabelului relațional. Sunt o metodă de mapare puternică și relativ nouă, care poate fi utilizată în locul metadatelor de mapare XML. Folosind adnotări de hibernare, utilizatorii pot stoca metadate într-un singur fișier java POJO care conține și codul, ajutând astfel la înțelegerea mai bună a structurii tabelului.

Ce sunt @SuppressWarnings?

Adnotarea @SuppressWarnings notifică compilatorul cu privire la avertismentele care sunt suprimate. Notificările sunt prezente sub formă de șir după nume. Se poate da la orice fel de declaratie. Java clasifică avertismentele în două clase, și anume neverificate și depreciate. Când codul mai vechi interacționează cu codul bazat pe generice, este produs un avertisment neverificat.