📝 Ce que vous apprendrez
- Ce que sont les annotations et leur raison d'être
- Annotations Java intégrées communes
- Comment créer des annotations personnalisées
- Cas d'utilisation des annotations dans des applications réelles
🔍 Que sont les annotations ?
Les annotations sont des métadonnées ajoutées au code Java qui donnent au compilateur ou aux frameworks des informations supplémentaires.
Ils n'affectent pas directement l'exécution du code, mais aident les outils tels que le compilateur, les IDE et les bibliothèques.
✅ Annotations intégrées communes
@Override
Indique au compilateur que vous remplacez une méthode d'une superclasse.
@Override
public String toString() {
return "Custom String";
}
✅ Permet de détecter les fautes de frappe ou les incohérences de signature.
@Deprecated* (en français dans le texte)
Marque une méthode/classe comme désuète. Un avertissement est affiché si elle est utilisée.
@Deprecated
public void oldMethod() {
System.out.println("Use newMethod() instead");
}
@SuppressWarnings
Indique au compilateur de ignorer les avertissements spécifiques.
@SuppressWarnings("unchecked")
ArrayList list = new ArrayList(); // avoids raw type warning
@FunctionalInterface
Assure qu'une interface n'a qu'une seule méthode abstraite (utilisée dans les lambdas).
@FunctionalInterface
interface MyFunc {
void execute();
}
✍️ Création d'annotations personnalisées
@interface MyAnnotation {
String value();
}
Utilisez-le comme suit :
@MyAnnotation("Hello!")
public class Demo {}
Vous pouvez également définir des valeurs par défaut :
@interface Info {
String author() default "Unknown";
int version() default 1;
}
🧠 Où sont utilisées les annotations ?
Les annotations sont omniprésentes dans le développement Java moderne :
- JUnit -
@Test
,@Before
,@After
- Spring Framework -
@Autowired
,@Service
,@Controller
- Bibliothèques de sérialisation - comme Jackson :
@JsonProperty
- JPA (Hibernate)** -
@Entity
,@Id
,@Column
Ils permettent de configurer le comportement sans écrire de code supplémentaire.
⚙️ Rétention et cible
Les annotations avancées peuvent définir où et pendant combien de temps elles s'appliquent :
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface RunThis {}
- Retention = durée de conservation de l'annotation (par exemple, dans le bytecode ou au moment de l'exécution)
- Target = où il peut être utilisé (classe, méthode, champ, etc.)
📘 Recap
- Les annotations sont des métadonnées qui aident les outils et les cadres de travail.
- Java en a de nombreuses intégrées comme
@Override
,@Deprecated
,@Override
, @Deprecated, @@Deprecated
, etc. - Vous pouvez définir des annotations personnalisées pour plus de flexibilité
- Largement utilisé dans les cadres modernes tels que Spring, JPA, JUnit