Symbole d'annotation @ en Java
-
L’annotation
@Override
en Java -
L’annotation
@SuppressWarnings
en Java -
L’annotation
@Deprecated
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.