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

Java Discussion :

liste des classes qui implémentent une interface


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 48
    Points : 38
    Points
    38
    Par défaut liste des classes qui implémentent une interface
    Bonjour,

    Je cherche et récupérer la liste des classes, depuis un jar, qui implémentent une interface bien précise. Est-ce possible? y-a-t-il une méthode directe pour le faire?

    Merci d'avance.

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    est-ce un besoin ponctuel ou est-ce que tu aurais besoin de faire ça dans ton appli?

    Si tu veux faire ça ponctuellement, l'IDE (Eclipse par exemple) le fait très bien.

    Si tu souhaites le faire dynamiquement, c'est plus compliqué.
    Tu dois bien y arriver en récupérant les classes depuis les entrées de ton jar, mais c'est plutôt artisanal et cela nécessite que les classes soient dans un jar (ce n'est pas toujours le cas) et que tu saches où se trouve le jar.

    Quel est le besoin qui se cache derrière tout ça?

    Si c'est pour un soucis de modularité, il existe d'autres solutions.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 48
    Points : 38
    Points
    38
    Par défaut
    Oui j'ai besoin de faire ça dynamiquement,
    Au fait je cherche à récupérer une classe bien précise qui implémente l'interface EntryPoint (GWT), et pour les classes ils seront dans un jar bien sûr qui sera le point d'entrée de l'application.

  4. #4
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Je ne connais pas GWT, mais de ce que j'ai trouvé sur EntryPoint, la solution du ServiceLoader devrait convenir.

    L'idée est de déclarer dans un fichier com.google.gwt.core.client.EntryPoint les classes du JAR qui implémentent l'interface, de mettre ce fichier dans le dossier META-INF/services de ton JAR et de faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (EntryPoint entry : ServiceLoader.load(EntryPoint.class) {
       entry.onModuleLoad();
    }

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    "scanner" le jar est une opération couteuse. D'abord par ce que ca nécessite de charger et d'instancier toutes les classes présentes dans le jar, alors que bien souvent, une partie des classes d'une librairie ne sont jamais utilisées par l'application, ce qui augmente donc inutilement l'empreinte mémoire.

    Pour ce besoin, effectivement, l'utilisation comme Service avec ServiceLoader me semble le plus approprié.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 48
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Deaf Voir le message
    Je ne connais pas GWT, mais de ce que j'ai trouvé sur EntryPoint, la solution du ServiceLoader devrait convenir.

    L'idée est de déclarer dans un fichier com.google.gwt.core.client.EntryPoint les classes du JAR qui implémentent l'interface, de mettre ce fichier dans le dossier META-INF/services de ton JAR et de faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (EntryPoint entry : ServiceLoader.load(EntryPoint.class) {
       entry.onModuleLoad();
    }
    Merci pour la réponse,
    C'est une bonne idée, sauf que dans mon cas le jar sera fourni et je cherche à le scanner.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    je n'aime en général pas l'idée du scann, car caveux dire que des classes qui n'ont pas été prévues pour être utilisée (classes abstraites, inner class et anonymous class de soutiens) qui implémentent l'interface se retrouvent aussi scannées :/

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/12/2014, 16h25
  2. Imposer une classe qui implemente une interface
    Par hwoarang dans le forum C#
    Réponses: 11
    Dernier message: 12/10/2010, 18h48
  3. Trouver classe qui implémente une interface
    Par matdur dans le forum C#
    Réponses: 6
    Dernier message: 25/06/2009, 10h14
  4. Réponses: 3
    Dernier message: 03/10/2008, 11h45
  5. [REFLEXION] Connaitre toutes les classes qui implémentent une interface
    Par narmataru dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 25/10/2006, 11h00

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