Maison >Java >javaDidacticiel >Les valeurs d'annotation peuvent-elles être lues dans une classe différente lors de l'exécution en Java ?

Les valeurs d'annotation peuvent-elles être lues dans une classe différente lors de l'exécution en Java ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 06:15:02756parcourir

Can Annotation Values Be Read in a Different Class at Runtime in Java?

Récupération des valeurs d'annotation en Java

Les annotations Java offrent un moyen pratique de fournir des métadonnées sur les éléments de code. Dans certains scénarios, vous devrez peut-être accéder aux valeurs de ces annotations au moment de l'exécution. En particulier, la question se pose :

Les annotations avec rétention d'exécution peuvent-elles être lues dans une classe différente en Java ?

La réponse est oui, à condition que l'annotation soit annotée avec @Retention(RetentionPolicy.RUNTIME). Cela indique que l'annotation doit être disponible au moment de l'exécution, au-delà de la compilation.

Considérez l'extrait de code suivant :

<code class="java">@Column(columnName="firstname")
private String firstName;

@Column(columnName="lastname")
private String lastName;</code>

Pour récupérer les valeurs d'annotation dans une autre classe, vous pouvez utiliser la réflexion :

<code class="java">for (Field f : MyClass.class.getFields()) {
    Column column = f.getAnnotation(Column.class);
    if (column != null) {
        System.out.println(column.columnName());
    }
}</code>

Si vous avez besoin d'accéder à des champs privés, vous pouvez utiliser getDeclaredFields() :

<code class="java">for (Field f : MyClass.class.getDeclaredFields()) {
    Column column = f.getAnnotation(Column.class);
    if (column != null) {
        System.out.println(column.columnName());
    }
}</code>

Ce code parcourt les champs de MyClass, vérifiant les annotations @Column sur chaque champ. Si une annotation est trouvée, elle imprime la valeur de l'attribut columnName.

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!

Déclaration:
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