Recherche…


Introduction

Le processeur d’annotations est un outil intégré à javac pour analyser et traiter les annotations au moment de la compilation.

Les annotations sont une classe de métadonnées pouvant être associées à des classes, méthodes, champs et même à d’autres annotations. Il existe deux manières d’accéder à ces annotations lors de l’exécution via réflexion et au moment de la compilation via des processeurs d’annotation.

@NonNull Annotation

public class Foo {
    private String name;
    public Foo(@NonNull String name){...};
    ...
}

Ici, @NonNull est une annotation qui est traitée au moment de la compilation par le studio Android pour vous avertir que la fonction particulière nécessite un paramètre non nul.

Types d'annotations

Il existe trois types d’annotations.

  1. Annotation des marqueurs - annotation sans méthode

    @interface CustomAnnotation {}
    
  1. Annotation à valeur unique - annotation comportant une méthode

    @interface CustomAnnotation {  
        int value();  
    }
    
  1. Annotation à valeurs multiples - annotation comportant plusieurs méthodes

    @interface CustomAnnotation{  
        int value1();  
        String value2();  
        String value3();  
    }
    

Création et utilisation d'annotations personnalisées

Pour créer des annotations personnalisées, nous devons décider

  • Cible - sur laquelle ces annotations fonctionneront comme le niveau du champ, le niveau de la méthode, le niveau de type, etc.
  • Rétention - à quel niveau l'annotation sera disponible.

Pour cela, nous avons intégré des annotations personnalisées. Découvrez ces plus utilisés:

@Cible

Cible et ce que cela signifie

@Rétention

Rétention et ce que cela signifie

Création d'annotations personnalisées

@Retention(RetentionPolicy.SOURCE) // will not be available in compiled class   
@Target(ElementType.METHOD) // can be applied to methods only
@interface CustomAnnotation{  
      int value();    
}

Utilisation de l'annotation personnalisée

class Foo{  
  @CustomAnnotation(value = 1)  // will be used by an annotation processor
  public void foo(){..}  
}

la valeur fournie dans @CustomAnnotation sera consommée par un Annotationprocessor pour générer du code au moment de la compilation, etc.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow