Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Instancier un objet dont le nom de l instance est passé en parametre

6 réponses
Avatar
aa
Bonjour,

Mon probleme est le suivant :

Je voudrais instancier une classe dynamiquement, depuis un bouton d'une GUI.

Je connais la methode Classe.newInstance(), mais comment acceder ensuite à
l'objet ainsi créé, si je n'ai pas prédéfini un emplacement mémoire avant ?

Bref, comment appuyer sur un bouton, et recuperer une instance sur laquelle
je pourrai executer des méthodes ?

Help, help, help !!!

6 réponses

Avatar
alexandre cartapanis
Bonjour,

Mon probleme est le suivant :

Je voudrais instancier une classe dynamiquement, depuis un bouton d'une GUI.

Je connais la methode Classe.newInstance(), mais comment acceder ensui te à
l'objet ainsi créé, si je n'ai pas prédéfini un emplacement mé moire avant ?

Bref, comment appuyer sur un bouton, et recuperer une instance sur laqu elle
je pourrai executer des méthodes ?

Help, help, help !!!


http://java.sun.com/docs/books/tutorial/reflect/

http://ricky81.developpez.com/tutoriel/java/api/reflection/

--
Alexandre CARTAPANIS - Responsable Système et Réseau
Email
Gsm. 06 72 07 51 55

Macymed SARL - 9 bvd Kraëmer 13014 Marseille France
Tél. 04 91 48 31 58 - Fax. 04 91 02 36 47
Web http://www.macymed.fr - Email

Avatar
aa
Alors, réponse à Alexandre (merci pour ta réactivité hors du commun!) :

J'ai déja jeté un coup d'oeil a la reflection, mais comme le dit la page sur
le site de Sun:

With the reflection API, you can perform these tasks even if the names of
the classes, fields, and methods are unknown until runtime.

Dans le cas présent :
Je connais le nom de ma classe, ses méthodes, etc...
Ce que je désire, c'est que chaque nouvel appui sur un jButton produise une
nouvelle instance de cette classe.
Donc je pourrais utiliser un

MonObjet nom_de_lobjet = new MonObjet(params);

Le probleme est : une fois que l'on a instancié un objet, désigné ci-dessus
par le nom "nom_de_lobjet" codé en dur dans la méthode, un nouvel appel a
cette méthode écrasera la référence vers le premier objet crée.
D'ou l'idée d'avoir une référence vers l'objet au nom variable. Mais je ne
sais pas comment l'implementer, je ne sais meme pas si cela est possible.

Voyez ce que je veux dire ?
Avatar
fd

Le probleme est : une fois que l'on a instancié un objet, désigné ci-dessus
par le nom "nom_de_lobjet" codé en dur dans la méthode, un nouvel appel a
cette méthode écrasera la référence vers le premier objet crée.
D'ou l'idée d'avoir une référence vers l'objet au nom variable. Mais je ne
sais pas comment l'implementer, je ne sais meme pas si cela est possible.

Voyez ce que je veux dire ?


Pourquoi n'ajoutes tu pas ta nouvelle instance à une liste ?

liste.add(new TonObjet(tesparams[]));
et tu manipules tes objets avec leur index dans la liste

Avatar
fd
Voyez ce que je veux dire ?

Pourquoi n'ajoutes tu pas ta nouvelle instance à une liste ?

liste.add(new TonObjet(tesparams[]));
et tu manipules tes objets avec leur index dans la liste
waou j'avais pas bien lu le topic, tu peux encore mieux faire ..

Hashtable<String,TonObjet>
je m'explique, tu ajoutes ta nouvelle instance dans une hashtable dont
la clé sera le nom que tu passe en parametre..
cependant attention, la clé doit etre unique donc si tu crée un nouvel
objet ayant un nom deja existant, tu ecrases l'instance precedante.


Avatar
aa
"fd" a écrit dans le message de
news: 441ad6b5$0$21519$

Voyez ce que je veux dire ?

Pourquoi n'ajoutes tu pas ta nouvelle instance à une liste ?

liste.add(new TonObjet(tesparams[]));
et tu manipules tes objets avec leur index dans la liste
waou j'avais pas bien lu le topic, tu peux encore mieux faire ..

Hashtable<String,TonObjet>
je m'explique, tu ajoutes ta nouvelle instance dans une hashtable dont la
clé sera le nom que tu passe en parametre..
cependant attention, la clé doit etre unique donc si tu crée un nouvel
objet ayant un nom deja existant, tu ecrases l'instance precedante.


Oups... soudain je me sens bete... J'avais même pas pensé à stocker ca dans
un tableau ( je n'avais pas envisagé ce genre de proportion pour cette
classe!!)

Merci beaucoup.



Avatar
thomas_escolan
Mieux, tu pourras ensuite demander le "déréférencement" de l'objet
par une
suppression de la table quand tu ne t'en sers plus ; du coup, cela
renvoie
ton objet au garbage collector, ce qui est plus propre !