Maison > Java > javaDidacticiel > le corps du texte

Comment puis-je accéder aux valeurs d'annotation dans une classe différente en Java ?

Mary-Kate Olsen
Libérer: 2024-10-26 21:34:03
original
114 Les gens l'ont consulté

How Can I Access Annotation Values in a Different Class in Java?

Accès aux valeurs d'annotation en Java

Les annotations sont un mécanisme puissant en Java pour ajouter des métadonnées aux classes, méthodes et champs. Ces annotations sont accessibles et utilisées au moment de l'exécution pour modifier le comportement du code annoté. Une question courante qui se pose est de savoir s'il est possible de lire la valeur d'une annotation dans une classe différente.

La réponse à cette question est oui, mais cela dépend de la politique de rétention de l'annotation. Les annotations peuvent avoir l'une des trois politiques de conservation suivantes :

  • SOURCE : Les annotations sont supprimées par le compilateur et ne sont pas disponibles au moment de l'exécution.
  • CLASS : Les annotations sont conservées dans le fichier de classe mais ne sont pas disponibles au moment de l'exécution via la réflexion.
  • RUNTIME : Les annotations sont conservées dans le fichier de classe et sont disponibles au moment de l'exécution via la réflexion.

Pour lire la valeur d'une annotation dans une classe différente, l'annotation doit avoir une politique de rétention d'exécution. Pour spécifier une politique de rétention d'exécution, utilisez l'annotation @Retention suivie de l'énumération RetentionPolicy :

@Retention(RetentionPolicy.RUNTIME)
@interface Column {
    String columnName();
}
Copier après la connexion

Une fois que l'annotation a une politique de rétention d'exécution, vous pouvez utiliser la réflexion pour accéder à ses valeurs dans une autre classe :

for (Field f : MyClass.class.getFields()) {
    Column column = f.getAnnotation(Column.class);
    if (column != null) {
        System.out.println(column.columnName());
    }
}
Copier après la connexion

Notez que pour accéder aux champs privés, vous devez utiliser la méthode getDeclaredFields() au lieu de getFields() :

for (Field f : MyClass.class.getDeclaredFields()) {
    Column column = f.getAnnotation(Column.class);
    if (column != null) {
        System.out.println(column.columnName());
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!