IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

Comment récupérer l'annotation mise sur une méthode spécifiée dans une interface


Sujet :

API standards et tierces Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Comment récupérer l'annotation mise sur une méthode spécifiée dans une interface
    Bonjour,

    désolé si cette question a déja été posée dans un des forums...

    je souhaiterais trouver par introspection si une méthode définie dans une interface possède bien une annotation.
    Je vous met ci dessous le cas de test.

    Une annotation 'require' est apposée sur la methode add() définie dans une interface IServ1.
    C1 implémente IServ1. Un main() à l'intérieur de C1 essaie de retrouver cette annotation.
    Même en parcourant l'interface elle même on ne parvient pas à trouver l'annotation.

    Pourriez vous m'aider s'il vous plait ? Ai je oublié quelque chose? Sinon y a t il un moyen quelconque de retrouver cette annotation à runtime?

    Merci par avance.


    @Inherited
    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface require {

    }

    public interface IServ1 {

    @require
    void add();

    }

    public class C1 implements IServ1 {

    @Override
    public void add() {
    // TODO Auto-generated method stub

    }


    public static void main(String[] args) {
    for(Method m:C1.class.getDeclaredMethods()){
    System.out.println(m);
    for(Annotation a : m.getAnnotations())
    System.out.println(a);

    System.out.println("");
    }

    for(Class c:C1.class.getInterfaces()) {
    System.out.println(c);
    for(Method m:c.getMethods()) {
    System.out.println(m);
    for(Annotation a : m.getAnnotations())
    System.out.println(a);
    }
    }


    }

    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    La javadoc dit ceci sur Inherited :
    Citation Envoyé par javadoc
    Note that this meta-annotation type has no effect if the annotated type is used to annotate anything other than a class. Note also that this meta-annotation only causes annotations to be inherited from superclasses; annotations on implemented interfaces have no effect.
    Donc il est normal que sur C1 tu ne voies pas l'annotation...
    De plus enr ecopiant ton code, j'ai ce résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public static void C1.main(java.lang.String[])
     
    public void C1.add()
     
    interface IServ1
    public abstract void IServ1.add()
    @require()
    Donc l'annotation est bien trouvée sur la méthode de l'interface... Tu obtiens quoi avec le code écrit ?

Discussions similaires

  1. arrayList dans une méthode recupérer dans une autre méthode
    Par toufik34 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 31/07/2013, 09h45
  2. Réponses: 5
    Dernier message: 15/04/2010, 15h05
  3. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  4. Réponses: 2
    Dernier message: 05/01/2009, 12h45
  5. Réponses: 1
    Dernier message: 05/05/2006, 14h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo