Nom d'objet dynamique - Java - Programmation
Marsh Posté le 12-04-2007 à 15:38:20
ANViL a écrit : Hello
|
Mon Dieu. C'est une blague ? Pourquoi voudrais-tu faire une chose pareille ?
Edit - Pardon, j'ai même oublié de répondre : non, c'est impossible. Mais dis pourquoi tu veux faire ça, il y a sûrement un moyen de le faire sans révolutionner la "théorie de la compilation".
Marsh Posté le 12-04-2007 à 15:51:15
Initialement je voulais créer un nombre d'objet indéfinis, dans une boucle, et faire en sorte qu'à chaque itération l'objet porte le nom
"nom_objeti" (où i représente bien sûr la valeur de l'itération).
J'en suis donc arrivé à me demander si on pouvais créer dynamique un nom d'objet (ce qui en fait reviens presque au même).
Dommage que ça ne soit pas possible
Marsh Posté le 12-04-2007 à 16:34:06
ANViL a écrit : Initialement je voulais créer un nombre d'objet indéfinis, dans une boucle, et faire en sorte qu'à chaque itération l'objet porte le nom |
Attends, là tu parles d'un nom de variable. Pourquoi veux-tu que les utilisateurs puissent choisir le nom de tes variables ? Et comment utilises-tu ces variables dans ton programme, ensuite ?
Tu dois faire une confusion, ce n'est pas un nom de variable que tu veux créer dynamiquement. Imagine que tu codes :
Code :
|
Pas très utile...
A quoi va te servir ensuite le "nom d'objet" dont tu parles, au juste ?
Marsh Posté le 12-04-2007 à 16:35:28
ANViL a écrit : Initialement je voulais créer un nombre d'objet indéfinis, dans une boucle, et faire en sorte qu'à chaque itération l'objet porte le nom |
Un
Code :
|
ne te convient pas ?
Marsh Posté le 12-04-2007 à 17:01:05
fhr a écrit : Un
|
Oui effectivement ça fonctionne aussi, mais c'est moins parlant qu'un nom personalisé (monTableauDObjets[i].methode , monTableauDObjets[i+1].methode.......)
Cela dit si c'est la seule façon de faire, je ferai avec
Marsh Posté le 12-04-2007 à 17:05:51
ANViL a écrit : Oui effectivement ça fonctionne aussi, mais c'est moins parlant qu'un nom personalisé (monTableauDObjets[i].methode , monTableauDObjets[i+1].methode.......) |
Tu fais avec une hashMap. Voire avec une LinkedHashMap si tu tiens à l'ordre de tes objets.
map.put(nom, objet)
et voilà.
Pour info, en Awk, je crois qu'on peut faire ce genre de trucs, mais je vois pas bien l'intérêt.
Marsh Posté le 12-04-2007 à 17:07:21
ANViL a écrit : Oui effectivement ça fonctionne aussi, mais c'est moins parlant qu'un nom personalisé (monTableauDObjets[i].methode , monTableauDObjets[i+1].methode.......) Cela dit si c'est la seule façon de faire, je ferai avec |
Les Map<String, String> s'pas fait pour les chiens
Marsh Posté le 12-04-2007 à 17:08:37
gfive a écrit : Tu fais avec une hashMap. Voire avec une LinkedHashMap si tu tiens à l'ordre de tes objets. |
Ah OK, je viens de comprendre la question . Désolé pour mes réponses au-dessus, c'était peu utile...
Marsh Posté le 21-11-2012 à 16:47:45
Bonjour,
Désolé du déterrage, mais en quoi cela est stupide ?
Par exemple, je veux créer un nombre non définit d'objets qui représentent des joueurs, les noms des objets c'est tout simplement le nom des joueurs.
En quoi cela est un problème ?
Comment je pourrais faire une succession d'instanciation de la manière suivante :
(la variable "nb" (int) aurait été récupérée depuis une saisie clavier)
Code :
|
Et ensuite appeler chaque objet de la manière suivante :
Code :
|
Merci pour vos réponses.
EDIT : J'ai trouvé la réponse : http://www.siteduzero.com/forum-83 [...] l#r7038738
Marsh Posté le 21-11-2012 à 19:18:45
gammerx a écrit : Bonjour, |
C'est un probleme parce que c'est pas possible. Et les reponses au-dessus a base de Map<String, Object> remplacent ca tres bien.
gammerx a écrit : Comment je pourrais faire une succession d'instanciation de la manière suivante :
|
Ta reponse ne couvre pas ce que tu demandes (ie tes lignes Joueur "nom = new Joueur(); objetsJoueurs[i] = nom;" ); et encore heureux puisque ce n'est pas possible en Java. Mais je pense que tu as mal exprime ton besoin; si cette solution te convient, c'est que tu n'en as rien a faire que le nom de tes variables soit le nom du joueur (et t'as bien raison).
Edit: juste pour tester si tu comprends - dans ta deuxieme boucle:
Code :
|
Comment tu comptes recuperer, pour affichage par exemple, le nom du joueur?
Marsh Posté le 02-12-2012 à 16:05:41
Bonjour,
Tout d'abord, merci de votre réponse !
(Comme indiqué précédemment (deux messages au dessus), la solution a été trouvée)
J'aurais tout simplement appelé le nom de l'objet, ou alors j'aurais fixé un attribut au joueur (qui aurait été initialisé via le constructeur).
Merci encore ! J'ai appris à manipuler un peu les collections (et les itérateurs), et ça simplifie grandement le travail !
Marsh Posté le 12-04-2007 à 15:24:58
Hello
Je souahaiterais pouvoir créer des noms d'objet dynamiques, en fonction d'une chaine entrée par l'utilisateur.
Par exemple:
Est-ce possible ?
merci d'avance
P.S: je suppose que la chaine ne contiendra jamais d'espaces
Message édité par ANViL le 12-04-2007 à 15:26:05