Adnotări în Java — @Override, @Deprecated și Custom Annotations
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,RUNTIMEpentru reflection - Adnotările pot avea valori default — e recomandat pentru câmpuri opționale
@Targetlimitează unde poate fi aplicată adnotarea (tip, metodă, câmp, parametru etc.)@Inheritedface ca adnotarea să fie moștenită de subclase
Common Mistakes
- Lipsa lui
@Retention— implicit eCLASS, invizibil la runtime. - Adnotări fără procesare — o adnotare fără cod care o citește e doar un comentariu structurat.
- Folosirea reflection pentru adnotări fără verificare —
isAnnotationPresentînainte degetAnnotation.
FAQ
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