« Salut Amigo ! »

"Bonjour Rishi."

"Aujourd'hui, je vais vous donner une introduction plus approfondie aux annotations."

"Comme vous le savez probablement déjà, les annotations sont des mots spéciaux qui peuvent être placés à côté des classes, des champs, des méthodes et des variables."

"Oui. Je les rencontre très fréquemment."

"Parfois, ils sont également appelés métadonnées . Leur objectif principal est de stocker des informations supplémentaires spécifiques sur les méthodes, les champs et les classes."

« Pour qui le stockent-ils ? »

"C'est une très bonne question."

"Les gens écrivent des annotations, ce qui signifie que quelqu'un doit en avoir besoin."

"Les annotations vous permettent de stocker des informations supplémentaires sur le code et les éléments du programme, mais, formellement, elles ne font pas partie du code."

"Les annotations peuvent être utilisées pour générer du XML, déterminer si une méthode est obsolète, suivre les bogues, etc."

"Voici un exemple d'annotations dans le code :"

Exemple
@CatInfo(manager=Catmanager.class, unique=true)
class Cat
{
 @Name("Missy")
 private String name;

 @SuppressWarnings(value = "unchecked")
 void getUniqueCatName()
 {

 }
}

"Comme vous pouvez le voir, les données peuvent être stockées dans des annotations."

"Si une annotation n'a qu'un seul champ appelé value , le nom du champ peut être omis :"

Exemple
@SuppressWarnings("unchecked")
void getUniqueCatName()
{

}

"S'il n'y a pas de paramètres à l'intérieur des parenthèses, ils peuvent également être omis :"

Exemple
@Override
void getUniqueCatName()
{

}

"C'est super facile de créer votre propre annotation. Déclarer une annotation est presque identique à déclarer une interface."

Exemple
@interface CatManager
{
 Class manager();
 boolean unique();
 String name() default "Unknown Cat";
}

"Il n'y a que quelques différences."

"Tout d'abord, vous mettez un signe « @ » avant le mot interface ."

"Deuxièmement, une annotation peut avoir des valeurs par défaut. Vous utilisez le mot default pour définir des valeurs par défaut . Voir l'exemple ci-dessus. Ces paramètres sont facultatifs et peuvent être omis lors de l'ajout d'annotations."

"Ah. Tout est plus facile que je ne le pensais. Et je les ai évités comme le Robo-Devil évite l'eau bénite. Ce n'est pas très agréable quand le code contient beaucoup de choses que vous ne comprenez pas entièrement."

"Oh, c'est bien que vous me l'ayez rappelé - je veux vous en dire plus sur les annotations utilisées par le compilateur."

"Il n'y a que 3 annotations de ce type. Eh bien, trois jusqu'à présent."

@Obsolète.

"Vous pouvez annoter une classe ou une méthode avec @Deprecated. Cela entraînera l'émission d'un avertissement par le compilateur (un avertissement n'est pas une erreur), et IntelliJ IDEA affichera cette méthode sous forme de texte barré. Quelque chose comme ceci :

Exemple
Date date = new Date();
int year = date.getYear();

@Passer outre.

"Il est considéré comme une bonne pratique d'ajouter l'annotation @Override aux méthodes que vous remplacez."

"A quoi ça sert? IDEA ne montre-t-il pas déjà si une méthode est remplacée ou non?"

"Tout d'abord, il y a IDEA et ensuite il y a la syntaxe Java."

"Et deuxièmement, hypothétiquement, vous pourriez avoir une situation où la méthode d'une classe de base est renommée sans modification correspondante du nom de la méthode dans la sous-classe. Le programme ne fonctionnera pas comme prévu, mais personne ne le remarquera. Cette annotation a été inventée pour empêcher ces situations de se produire :"

Exemple
@Override
void getUniqueCatName()
{

}

@Supprimer les avertissements.

"Parfois, le compilateur affiche de nombreux avertissements. Et parfois, nous connaissons les "problèmes" et choisissons délibérément d'utiliser le code correspondant qui les crée. Vous pouvez utiliser cette annotation pour masquer certains de ces avertissements."

"Un programmeur peut utiliser l' annotation @SuppressWarnings pour dire au compilateur, "Ne pas afficher d'avertissement pour cette erreur - c'est intentionnel." Par exemple:"

Exemple
@SuppressWarnings("unchecked")
void getUniqueCatName()
{

}

"J'ai compris."

"Je commence à être un peu fatigué. Je vais aller mouiller ma gorge desséchée. Continuons après une pause, d'accord ?"

"Bien sûr."