Skip to content

Adnotări în Java — @Override, @Deprecated și Custom Annotations

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Adnotări în Java. We cover key concepts, practical examples, and best practices.

Adnotările în Java sunt metadate adăugate codului sursă care pot fi procesate la compilare sau runtime, oferind informații compilatorului, framework-urilor și instrumentelor de dezvoltare fără a modifica comportamentul programului.

The Problem

Configurarea și marcarea codului cu scopuri specifice (validare, serializare, dependențe) duce la cod cuplat și greu de întreținut. Acest quick-fix îți arată cum să folosești adnotările built-in și să creezi propriile adnotări.

The Wrong Way

// Fără @Override — compilatorul nu verifică suprascrierea
public boolean equal(Object obj) {  // greșeală: equals în loc de equal
    return super.equals(obj);
}

The Right Way

@Override
public boolean equals(Object obj) {
    return super.equals(obj);
}
// Eroare de compilare dacă metoda nu suprascrie nimic

Step-by-Step Fix

1. Folosește adnotări built-in

@Override                    // verifică suprascrierea metodei
@Deprecated(since = "2.0")   // marchează ca învechit
@SuppressWarnings("unchecked") // suprimă warning-uri
@FunctionalInterface        // verifică că interfața e funcțională

2. Creează o adnotare custom

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)  // disponibilă la runtime
@Target(ElementType.METHOD)          // se aplică doar pe metode
public @interface LogExecution {
    String value() default "";
    boolean logParams() default true;
}

3. Procesează adnotarea cu reflection

Method method = obj.getClass().getMethod("process");
if (method.isAnnotationPresent(LogExecution.class)) {
    LogExecution ann = method.getAnnotation(LogExecution.class);
    System.out.println("Logging: " + ann.value());
}

Prevention Tips

  • Folosește @Retention(SOURCE) pentru adnotări doar la compilare, RUNTIME pentru reflection
  • Adnotările pot avea valori default — e recomandat pentru câmpuri opționale
  • @Target limitează unde poate fi aplicată adnotarea (tip, metodă, câmp, parametru etc.)
  • @Inherited face ca adnotarea să fie moștenită de subclase

Common Mistakes

  1. Lipsa lui @Retention — implicit e CLASS, invizibil la runtime.
  2. Adnotări fără procesare — o adnotare fără cod care o citește e doar un comentariu structurat.
  3. Folosirea reflection pentru adnotări fără verificareisAnnotationPresent înainte de getAnnotation.

FAQ

### Ce este o adnotare în Java?

O adnotare este o formă de metadată care poate fi atașată codului (clase, metode, câmpuri) și procesată la compilare sau runtime.

Care e diferența dintre @Override și @Deprecated?

@Override e o adnotare de compilare care asigură că metoda suprascrie corect o metodă din superclasă. @Deprecated marchează elemente care nu ar trebui folosite.

Cum procesez adnotările la runtime?

Prin reflection API: getAnnotation(), getDeclaredAnnotations(), isAnnotationPresent(). Necesită @Retention(RUNTIME).

Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu Java pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro