English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans ce tutoriel, nous allons apprendre ce qu'est une annotation, différents types d'annotations Java et comment les utiliser à travers des exemples.
Les annotations Java sont les métadonnées de notre code source (les données sur les données).
Elles fournissent des informations supplémentaires au compilateur sur le programme, mais ne font pas partie du programme lui-même. Ces annotations n'affectent pas l'exécution du programme compilé.
Les annotations commencent par @. Leur syntaxe est :
@AnnotationName
Permettons d'examiner l'annotation @Override comme exemple.
@Override annotation spécifie que la méthode marquée par cette annotation redéfinit une méthode avec le même nom, le même type de retour et la même liste de paramètres que la méthode de la classe parente.
Lorsque vous réécrivez une méthode, il n'est pas nécessaire d'utiliser @Override. Cependant, si nous l'utilisons, le compilateur donnera une erreur si une erreur se produit lors de la réécriture de la méthode (par exemple, un type de paramètre incorrect).
class Animal { public void displayInfo() { System.out.println("I am an animal."); } } class Dog extends Animal { @Override public void displayInfo() { System.out.println("I am a dog."); } } class Main { public static void main(String[] args) { Dog d1 = new Dog(); d1.displayInfo(); } }
résultat de la sortie
I am a dog.
在此示例中,方法displayInfo()同时存在于父类Animal和子类中Dog。调用此方法时,将调用子类的方法,而不是超类中的方法。
注解也可以包括元素(成员/属性/参数)。
标记注解不包含成员/元素。它仅用于标记声明。
其语法为:
@AnnotationName()
由于这些注解不包含元素,因此不需要括号。例如,
@Override
单个元素注解仅包含一个元素。
其语法为:
@AnnotationName(elementName = "elementValue")
如果只有一个元素,则习惯上将该元素命名为value。
@AnnotationName(value = "elementValue")
在这种情况下,也可以移除元素名称。元素名称value默认为。
@AnnotationName("elementValue")
这些注解包含多个用逗号分隔的元素。
其语法为:
@AnnotationName(element1 = "value1", element2 = "value2")
任何声明都可以通过将其放在声明上面来标记注解。从Java 8开始,注释也可以放在类型之前。
Comme mentionné précédemment, les commentaires Java peuvent être placés au-dessus des déclarations de classes, méthodes, interfaces, champs et autres éléments de programme.
import java.util.*; class Main { @SuppressWarnings("unchecked") static void wordsList() { ArrayList wordList = new ArrayList<>(); //Cela entraînera des avertissements non vérifiés wordList.add("w")3codebox"); System.out.println("Word list => " + wordList); } public static void main(String args[]) { wordsList(); } }
résultat de la sortie
Word list => [w3codebox]
Si le programme suivant est compilé sans l'annotation @SuppressWarnings("unchecked"), le compilateur continuera à compiler le programme, mais donnera un avertissement tel que :
Main.java utilise des opérations non vérifiées ou non sécurisées. Word list => [w3codebox]
Nous recevons un avertissement
Main.java utilise des opérations non vérifiées ou non sécurisées
parce que la ligne suivante.
ArrayList wordList = new ArrayList<>();
C'est parce que nous n'avons pas encore défini le type générique de ArrayList. Nous pouvons résoudre cet avertissement en spécifiant le générique entre les crochets <>.
ArrayList<String> wordList = new ArrayList<>();
En Java 8Avant, les commentaires ne pouvaient être appliqués qu'aux déclarations. Maintenant, ils peuvent également être utilisés avec les commentaires de type. Cela signifie que nous pouvons placer des annotations n'importe où où le type est utilisé.
appelle du constructeur
new @Readonly ArrayList<>()
définition de type
@NonNull String str;
Cette déclaration spécifie une variable non nulle de type String str pour éviter NullPointerException.
@NonNull List<String> newList;
Cette déclaration spécifie une liste non nulle de type String.
List<@NonNull String> newList;
Cette déclaration spécifie une liste de valeurs non nulles de type String.
conversion de typenewStr = (@NonNull String) str;
clauses extends et implements
class Warning extends @Localized Message
throws clauses
public String readMethod() throws @Localized IOException
Les commentaires de type permettent une analyse meilleure du code Java et fournissent un contrôle de type plus puissant.
1. Predefined annotations
@Deprecated
@Override
@SuppressWarnings
@SafeVarargs
@FunctionalInterface
2. Meta-annotations
@Retention
@Documented
@Target
@Inherited
@Repeatable
3. Custom annotations
These annotation types inJava Annotation TypesDetailed description is available in the tutorial.
Compiler instructions - Can be used to provide instructions to the compiler, detect errors, or disable warnings. Such as built-in annotations @Deprecated, @Override, @SuppressWarnings.
Compile-time instructions - These comments provide compile-time instructions to help software build tools generate code, XML files, etc.
Runtime instructions - One can define some annotations to provide instructions to the program at runtime. These annotations are accessed using Java reflection.