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

Langage Java Discussion :

[Annotations] Trouver toutes les classes utilisant une annotation.


Sujet :

Langage Java

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    946
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 946
    Points : 1 849
    Points
    1 849
    Par défaut [Annotations] Trouver toutes les classes utilisant une annotation.
    Bonjour,

    Existe-t-il un moyen simple et efficace de récupérer à l'exécution la liste de toutes les classes signalées par une annotation connue?

    Mettons par exemple que l'on crée l'annotation @Alpha :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    public @interface Alpha {
        // ...
    }
    Je veux récupérer à l'exécution la liste de toutes les classes signalées par @Alpha, comme cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @Alpha
    public class Exemple {
        // ...
    }
    Merci d'avance,

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    C'est possible, mais couteux pour l'ordi.

    Quel est le but ? Peut-être y a-t-il moyen de trouver une autre possibilité pour ton problème...

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    946
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 946
    Points : 1 849
    Points
    1 849
    Par défaut
    Il s'agit de réaliser une API permettant aux utilisateurs de fournir leurs propres implémentations de certaines interfaces. Il serait commode pour eux que la seule tâche à faire pour que l'API utilise leur implémentation soit de la signaler via une annotation.

    Quel que soit le coût en charge de la solution que vous imaginez, il est négligeable, car l'API initialisera toutes les implémentations au lancement de l'application.

    Une solution alternative serait d'utiliser des fichiers de configuration, mais le client préférerait les annotations si c'est possible.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Le but d'une annotation n'est pas de dire "hey, j'existe", mais plutôt "je peux faire ça".

    Il y a donc trois possibilités :
    * Soit tu passes par un injecteur de dépendances (tel Guice, Pico Container ou Spring) et tu ajoutes un petit comportement spécifique à l'annotation. Mais il faut configurer le tout dans des fichiers XML.
    * Tu passes par la classe java.util.ServiceLoader (Java 6), mais il faut configurer le tout dans des fichiers Manifest.
    * Tu passes par l'ensemble des ClassLoader, et tu charges chaque classe en mémoire avant de vérifier si l'annotation est présente. Comme je l'ai dit, c'est très coûteux.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    946
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 946
    Points : 1 849
    Points
    1 849
    Par défaut
    Ce sera donc les fichiers de configuration.

    Merci pour votre aide.

    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment lister toutes les classes annotées ?
    Par verbose dans le forum Général Java
    Réponses: 16
    Dernier message: 03/05/2011, 00h38
  2. Trouver toutes les classes implémentant une interface.
    Par BugFactory dans le forum Langage
    Réponses: 20
    Dernier message: 31/08/2009, 11h10
  3. Utilisation de toutes les instances d'une classe dans un while
    Par canaboss dans le forum Débuter avec Java
    Réponses: 12
    Dernier message: 28/04/2008, 15h28
  4. Existe t il une doc de toutes les classes dites standard?
    Par CnD dans le forum Choisir un environnement de développement
    Réponses: 5
    Dernier message: 27/11/2005, 11h53
  5. [Reflection] Obtenir toutes les classes implémentant une interface
    Par Pill_S dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 20/04/2005, 16h48

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