English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base Java

Contrôle de flux Java

Java Tableau

Java Orienté Objet (I)

Java Orienté Objet (II)

Java Orienté Objet (III)

Gestion des exceptions Java

Java List

Java Queue (file d'attente)

Java Map Collections

Java Set Collections

Java Entrée/Sortie (I/O)

Java Reader/Writer

Autres sujets Java

Annotations Java

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).

示例1:@Override 注解示例

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。调用此方法时,将调用子类的方法,而不是超类中的方法。

注解格式

注解也可以包括元素(成员/属性/参数)。

1.标记注解

标记注解不包含成员/元素。它仅用于标记声明。

其语法为:

@AnnotationName()

由于这些注解不包含元素,因此不需要括号。例如,

@Override

2.单元素注解

单个元素注解仅包含一个元素。

其语法为:

@AnnotationName(elementName = "elementValue")

如果只有一个元素,则习惯上将该元素命名为value。

@AnnotationName(value = "elementValue")

在这种情况下,也可以移除元素名称。元素名称value默认为。

@AnnotationName("elementValue")

3.多元素注解

这些注解包含多个用逗号分隔的元素。

其语法为:

@AnnotationName(element1 = "value1", element2 = "value2")

注解位置

任何声明都可以通过将其放在声明上面来标记注解。从Java 8开始,注释也可以放在类型之前。

1.在声明语句上方

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.

示例2:@SuppressWarnings注释示例

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<>();

2. annotations de type

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 type
newStr = (@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.

Annotation types

1. Predefined annotations

  1. @Deprecated

  2. @Override

  3. @SuppressWarnings

  4. @SafeVarargs

  5. @FunctionalInterface

2. Meta-annotations

  1. @Retention

  2. @Documented

  3. @Target

  4. @Inherited

  5. @Repeatable

3. Custom annotations

These annotation types inJava Annotation TypesDetailed description is available in the tutorial.

Annotation usage

  • 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.