Rechercher les Class qui implémentent une Interface - Java - Programmation
Marsh Posté le 16-06-2006 à 11:31:25
Tes taches, ce sont des objets non ?
Bah tu les parcours et si ce sont des objets qui implemente ton interface, rulez (en fait je vois pas le probleme...)
genre
Code :
|
Bon, apres, il y a surement mieux...
Marsh Posté le 16-06-2006 à 11:41:49
j'ai peur que parcourrir tout le classpath soit un rien lourd...
Je connais pas leur nom a priori.
Pour l'instant, c'est ce que je fait, quand l'utilisateur fournir un nom de classe entièrement qualifié, je vérifie que c'est une classe, qu'elle implémente l'interface qui va bien, et qu'elle est instanciable. Mais c'est un peu foireux je trouve, ça implique que l'utilisateur connait le nom de la classe au caractère près.
Marsh Posté le 16-06-2006 à 11:47:06
Eclise doit se baser sur une recherche dans les fichier java pour faire ça donc ce n'est pas applicable à ton cas.
Je ne crois pas que ce soit possible de lister les classes disponibles dans le classpath
Ce que tu peux faire, c'est passer par un parametre dans un fichier de conf qui te donnerait une liste de classe à charger
Marsh Posté le 16-06-2006 à 15:03:48
En fait, c'est possible
Je me suis un peu creusé la tête et voila le résultat
Code :
|
Marsh Posté le 16-06-2006 à 16:51:44
bah, ça ne marche que si t'as un fichier sur le filesystem qui correspond à ta classe, ET tu forces ta vm à loader toutes ces classes, ce qui n'est pas necessairement désirable.. (meme si dans le cas d'une web-app, et dans le cas ou tes classes sont dans WEB-INF/classes, elles seront plus que probablement toutes loadées)
... un moyen bien plus simple et leger, c'est d'utiliser un mechanisme avec un fichier descripteur, style simple fichier properties. tu peux dès lors avoir tes implementations dans des jars ou n'importe ou. genre classloader.getResourceURLs("META-INF/supertruc.properties" ) pour récuperer tous les "supertruc.properties" accessible à ton classloader, et hop.
évidemment, c'est un mini poil plus chiant pour l'implementeur qui doit faire ce descripteur ... mais bcp plus portable et pérenne
Marsh Posté le 16-06-2006 à 16:53:13
nb: y'a déjà eu qques topics similaires ou il pourrait y'avoir des infos interessantes..
Marsh Posté le 17-06-2006 à 12:15:44
et avec des annotations et un petit coup d'apt, ca passerait pas ?
Marsh Posté le 17-06-2006 à 14:23:37
et apt il va taper dans ton classpath runtime?
ou bien Puzzles, ptet?
Marsh Posté le 17-06-2006 à 15:22:17
ah ? apt c'est au compile time ?
(puzzles hum ... vivement que j'ai du temps de m'occuper de cetruc tiens pfff )
Marsh Posté le 17-06-2006 à 15:26:41
je croyais?
enfin, build-time en tous cas?
Marsh Posté le 16-06-2006 à 11:20:08
est-ce que c'est possible de rechercher dans le classpath les classes qui implémentent une interface ? dans le même style que la recherche dans Eclipse.
En fait, c'est pour mettre ça dans une appli web de configuration d'un outil d'ordonnancement. Du coup, pour ordonnancer les taches, il faut les trouver. Sachant que les taches implémentent toutes une interface, etc etc...
Je cherche donc un système (léger si possible)...
J'ai pas l'impréssion que le système de Eclipse soit externalisable, et mes recherches sur le net n'ont rien donné.
Merci
---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris