Symbole d'annotation @ en Java

Bishal Awasthi 12 octobre 2023
  1. L’annotation @Override en Java
  2. L’annotation @SuppressWarnings en Java
  3. L’annotation @Deprecated en Java
Symbole d'annotation @ en Java

Cet article présentera le symbole @, appelé annotations en Java. Nous nous concentrerons sur les annotations Java intégrées telles que @Override, @SuppressWarnings et @Deprecated.

L’annotation @Override en Java

L’annotation est un moyen d’indiquer les informations supplémentaires attachées à une classe, une interface et une méthode en Java. Le compilateur Java et la JVM utilisent les informations fournies avec l’utilisation d’annotations. Une annotation commence par le symbole @. L’annotation @Override garantit que la méthode de la classe enfant remplace la méthode de la classe parent. C’est une annotation de marqueur car elle n’a pas de valeurs ou d’éléments. Lorsque nous utilisons l’annotation @Override, le compilateur génère des erreurs et nous avertit s’il y a une erreur lors de la redéfinition de la méthode. Les erreurs probables qu’il vérifie sont les fautes d’orthographe et les erreurs d’argument et de type de retour. Nous pouvons démontrer l’utilisation de l’annotation @Override en créant un héritage. Premièrement, nous n’utiliserons pas l’annotation, mais plus tard, nous l’utiliserons pour montrer comment fonctionne @Override.

Par exemple, créez une classe Parent et écrivez une méthode message() avec un type de retour void. Imprimez des messages à l’intérieur de la méthode. De même, créez une autre classe, Child, et étendez la classe Parent. Créez la même méthode message() avec le type void et écrivez un message à l’intérieur. Juste avant la méthode, écrivez l’annotation @Override. Ensuite, à l’intérieur de la classe principale, créez des objets de chacune des classes et appelez la méthode message().

Ici, la sous-classe hérite de la superclasse et chacune des méthodes de chaque classe est invoquée sans aucun problème.

Exemple de code :

class Annotation {
  public static void main(String[] args) {
    new Child().message();
    new Parent().message();
  }
}

class Parent {
  void message() {
    System.out.println("Invoked from the Parent class");
  }
}

class Child extends Parent {
  @Override
  void message() {
    System.out.println("Invoked from the Child class");
  }
}

Production:

Invoked from the Child class
Invoked from the Parent class

Modifiez la méthode message() de la classe Child en message(). Ensuite, exécutez le programme. Il affiche la sortie suivante.

Production:

Annotation.java:18: error: method does not override or implement a method from a supertype

Ici, nous avons changé le nom de la méthode. Parfois, le programmeur peut commettre de tels types d’erreurs lors de l’annulation. Ainsi, l’annotation @Override assure toute erreur lors de la redéfinition d’une méthode et alerte le programmeur.

L’annotation @SuppressWarnings en Java

L’annotation @SuppressWarnings indique au compilateur de supprimer ou d’ignorer l’erreur pour le morceau de code spécifié. Nous pouvons utiliser l’annotation pour un type, un champ, une méthode, un paramètre, un constructeur et une variable locale. Nous pouvons spécifier la valeur unchecked entre les parenthèses de l’annotation comme @SuppressWarnings("unchecked") pour supprimer l’erreur. Lorsque nous utilisons l’annotation avant la classe, cela supprimera toutes les erreurs à l’intérieur de la classe. Et lorsque nous l’utilisons avant toute méthode à l’intérieur d’une classe, cela ne supprimera que l’erreur de cette classe particulière.

Par exemple, importez le package util et créez une classe nommée Annotation. Écrivez @SuppressWarnings("unchecked") avant la méthode principale. Dans la méthode main, créez une instance de ArrayList() et affectez-la à la variable fruits. Ensuite, ajoutez les valeurs apple et mango avec la méthode add(). Enfin, imprimez la variable fruits.

Dans l’exemple ci-dessous, nous avons tout importé du package util. Il importe la classe ArrayList que nous utilisons par la suite. Le code ci-dessus s’exécute avec succès, bien qu’il y ait une erreur. Nous avons utilisé la collection non générique ArrayList. Nous n’avons pas spécifié le type à l’intérieur d’un symbole <>. Par conséquent, le code est défectueux. Mais il s’exécute car nous avons supprimé l’erreur à l’aide de l’annotation @SuppressWarnings.

Exemple de code :

import java.util.*;
class Annotation {
  @SuppressWarnings("unchecked")
  public static void main(String args[]) {
    ArrayList fruits = new ArrayList();
    fruits.add("apple");
    fruits.add("mango");
    System.out.println(fruits);
  }
}

Production:

[apple, mango]

Si nous n’utilisons pas l’annotation pour le code suivant, le compilateur affichera l’erreur suivante.

Production:

Note: Annotation.java uses unchecked or unsafe operations.

L’annotation @Deprecated en Java

L’annotation @Deprecated est utilisée pour désigner le morceau de code spécifié en tant que code obsolète. Le compilateur affichera un avertissement de dépréciation lorsque nous utiliserons l’annotation. Nous pouvons annoter un type, une méthode, un champ et un constructeur en utilisant l’annotation @Deprecated.

Par exemple, créez une classe Car ​​et créez un constructeur avec les paramètres color, length et width. Utilisez l’annotation @Deprecated avant le constructeur. Laissez le corps vide. Créez un autre constructeur et écrivez un paramètre de chaîne name dedans. Créez une autre classe, Annotation, et à l’intérieur de la méthode principale, appelez ces deux constructeurs.

Dans l’exemple ci-dessous, nous avons utilisé les annotations @Deprecated avant le premier constructeur. Il permet au compilateur de générer un avertissement indiquant que le constructeur est obsolète. De cette façon, nous pouvons utiliser l’annotation pour spécifier quelque chose qui est obsolète dans le code. La suppression du code obsolète n’est pas encouragée car il peut être utilisé pour revenir aux versions précédentes si nécessaire. La nouvelle alternative est encouragée à être utilisée dans de tels cas.

Exemple de code :

class Annotation {
  public static void main(String args[]) {
    new Car("red", 550, 300);
    new Car("Lambo");
  }
}
class Car {
  @Deprecated
  Car(String color, int length, int width) {}
  Car(String name) {}
}

Production:

Note: Annotation.java uses or overrides a deprecated API.

Article connexe - Java Annotation