j'ai créer un éditeur générique que l'on peut spécialiser en spécifiant des
classes abstraites.
Comment puis-je créer un petit menu déroulant qui me proposerait de charger
telle ou telle classes spécifiant la classe abstraite avant de lancer
l'éditeur ?
Pour être plus clair, imaginer une classe abstraite HelloWorldAbstract.class
avec un methode abstraite SaySomething() qui afficherait a l'écran une
phrase quelconque. J'aimerais pouvoir étendre HelloWorldAbstract.class en
plusieurs classes différentes et les placer dans un répertoire "plug in" par
exemple. Comment puis-je créer un petit menu déroulant me permettant de
choisir au démarrage la classe que je souhaite utiliser pour affichier une
phrase a l'écran ?
Voilà j'espere avoir été clair.
ps: L'aide à m'apporter ne consiste pas dans la création du gui.
"Jean-Philippe Martin" a écrit dans le message de news:411b9b94$0$284$
J'apprécie grandement l'aide que vous tentez de m'apporter. Toutefois, je pense que l'erreur qu'il susbsiste est dûe au fait que ma classe "HelloWorldAbstractClass" ne possède pas de constructeur par défaut comme expliqué dans mon dernier post.
mouais forcement si tu donnes pas tout d'un coup ;)) ...
J'ai eu ce probleme en reprenant un framework qui faisait de l'instanciation directe pour faire ce que tu veux c'est à dire de l'instanciation dynamique. Le package reflect ne te donne hélas pas la solution ici (ou j'attends l'avis des experts car je ne la connais pas).
Par contre tu peux faire la chose suivante : - sortir ton initialisation de ton constructeur dans ta classe abstraite et revenir à un constructeur par défaut. - mettre cette initialisation dans une méthode init protected
Créer une classe factory dans ton package plugin avec une méthode comme suit : public HelloWorldAbstract createHelloWorldAbstract(String className, Object leFameuxParam) throws lesExceptionsQuiVontBien{ HelloWorldAbstractClass c (HelloWorldAbstractClass)(cl.loadClass("HelloWorldDerivee").newInstance()); c.init(leFameuxParam); return c; }
Et voila le tour est joué, c'est pas beau tout ça ;))
Est-ce que ceci n'ajoute pas de piment au problème ? :o) non ca va ...
Emmanuel
"Jean-Philippe Martin" <jpmartin@student.info.ucl.ac.be> a écrit dans le
message de news:411b9b94$0$284$ba620e4c@news.skynet.be...
J'apprécie grandement l'aide que vous tentez de m'apporter. Toutefois, je
pense que l'erreur qu'il susbsiste est dûe au fait que ma classe
"HelloWorldAbstractClass" ne possède pas de constructeur par défaut comme
expliqué dans mon dernier post.
mouais forcement si tu donnes pas tout d'un coup ;)) ...
J'ai eu ce probleme en reprenant un framework qui faisait de l'instanciation
directe pour faire ce que tu veux c'est à dire de l'instanciation dynamique.
Le package reflect ne te donne hélas pas la solution ici (ou j'attends
l'avis des experts car je ne la connais pas).
Par contre tu peux faire la chose suivante :
- sortir ton initialisation de ton constructeur dans ta classe abstraite et
revenir à un constructeur par défaut.
- mettre cette initialisation dans une méthode init protected
Créer une classe factory dans ton package plugin avec une méthode comme suit
:
public HelloWorldAbstract createHelloWorldAbstract(String className, Object
leFameuxParam) throws lesExceptionsQuiVontBien{
HelloWorldAbstractClass c
(HelloWorldAbstractClass)(cl.loadClass("HelloWorldDerivee").newInstance());
c.init(leFameuxParam);
return c;
}
Et voila le tour est joué, c'est pas beau tout ça ;))
Est-ce que ceci n'ajoute pas de piment au problème ? :o)
non ca va ...
"Jean-Philippe Martin" a écrit dans le message de news:411b9b94$0$284$
J'apprécie grandement l'aide que vous tentez de m'apporter. Toutefois, je pense que l'erreur qu'il susbsiste est dûe au fait que ma classe "HelloWorldAbstractClass" ne possède pas de constructeur par défaut comme expliqué dans mon dernier post.
mouais forcement si tu donnes pas tout d'un coup ;)) ...
J'ai eu ce probleme en reprenant un framework qui faisait de l'instanciation directe pour faire ce que tu veux c'est à dire de l'instanciation dynamique. Le package reflect ne te donne hélas pas la solution ici (ou j'attends l'avis des experts car je ne la connais pas).
Par contre tu peux faire la chose suivante : - sortir ton initialisation de ton constructeur dans ta classe abstraite et revenir à un constructeur par défaut. - mettre cette initialisation dans une méthode init protected
Créer une classe factory dans ton package plugin avec une méthode comme suit : public HelloWorldAbstract createHelloWorldAbstract(String className, Object leFameuxParam) throws lesExceptionsQuiVontBien{ HelloWorldAbstractClass c (HelloWorldAbstractClass)(cl.loadClass("HelloWorldDerivee").newInstance()); c.init(leFameuxParam); return c; }
Et voila le tour est joué, c'est pas beau tout ça ;))
Est-ce que ceci n'ajoute pas de piment au problème ? :o) non ca va ...
Emmanuel
Jean-Philippe Martin
J'ai eu ce probleme en reprenant un framework qui faisait de l'instanciation
directe pour faire ce que tu veux c'est à dire de l'instanciation dynamique.
Le package reflect ne te donne hélas pas la solution ici (ou j'attends l'avis des experts car je ne la connais pas).
Par contre tu peux faire la chose suivante : - sortir ton initialisation de ton constructeur dans ta classe abstraite et
revenir à un constructeur par défaut. - mettre cette initialisation dans une méthode init protected
Créer une classe factory dans ton package plugin avec une méthode comme suit
: public HelloWorldAbstract createHelloWorldAbstract(String className, Object
leFameuxParam) throws lesExceptionsQuiVontBien{ HelloWorldAbstractClass c >