Maison > Java > javaDidacticiel > Pourquoi les classes Java n'héritent-elles pas des annotations des interfaces ?

Pourquoi les classes Java n'héritent-elles pas des annotations des interfaces ?

Linda Hamilton
Libérer: 2024-11-04 10:32:01
original
854 Les gens l'ont consulté

Why Don't Java Classes Inherit Annotations from Interfaces?

Annotations héritées : exclusion d'interface

Malgré le type d'annotation portant l'annotation Inherited, les classes Java n'héritent pas des annotations des interfaces implémentées. Ce comportement provient de conflits d'héritage potentiels.

Considérons l'exemple suivant :

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
public @interface Baz { String value(); }

interface Foo {
    @Baz("baz")
    void doStuff();
}

interface Bar {
    @Baz("phleem")
    void doStuff();
}

class Flipp {
    @Baz("flopp")
    public void doStuff() {}
}

class MyClass extends Flipp implements Foo, Bar {}
Copier après la connexion

Lors de l'accès aux annotations via la réflexion :

MyClass.class.getMethod("doStuff").getAnnotation(Baz.class).value();
Copier après la connexion

Le résultat devient ambigu, car il il n'y a pas de chemin d'héritage clair pour l'annotation. Serait-ce « baz », « phleem » ou « flopp » ?

Pour éviter de tels conflits et maintenir la clarté, Java exclut intentionnellement les annotations héritées des interfaces. Les annotations placées sur les méthodes d'interface ont généralement une utilité limitée en raison de cette restriction d'héritage.

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