bonjour à tous,

j'ai plusieurs tableaux de composants différents : comp, lampe, interrupteur....

Quand je veux créer un nouveau composant, je parcours le tableau qui stocke ces derniers, et je prends le premier index ou l'objet est "null", c'est à dire non défini, car cet emplacement est donc libre.
le code partiel est :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	public static void clic_sur_recept( int r, int ix, int iy) {
 
			JOptionPane.showMessageDialog(null, " clic sur recept : " + r + "   on va créer un " + Var.matériel);
			String toto = "Var." + Var.matériel;
			JOptionPane.showMessageDialog(null, " toto =  : " + toto);
				if (Var.matériel== "lampe") {
						// si une ligne du tableau "comp" est dispo, on l'attribue au prochain composant
							for (int n=0; n<Const.nb_R; n++) {
 
									if (Var.comp[n] == null) {
							//			JOptionPane.showMessageDialog(null, " je vais créer le comp : " + i );
 
										attribComp(r, ix, iy, n) ;
										break;
									}
							}
				}
		}
A la ligne 10, je cherche un emplacement libre dans le tableau "comp" de la classe Var.
Cela fonctionne mais je dois répéter ce code pour tous mes tableaux contenant des objets.

J'ai tenté de créer une chaine "toto" à la ligne 4, contenant le début de la référence au tableau : "Var." en concaténant avec le contenu de la variable "Var.matériel", qui contient le nom du tableau.
La chaine ainsi obtenue est ok, et c'est : "Var.comp".

En étant un peu trivial, j'ai tenté de remplacer la ligne 10 par : "if ( toto[n] == null)" ......
mais cela ne fonctionne pas, car le programme cherche un tableau toto[] et n'interprète pas ce "toto" comme son contenu qui est "Var.comp", qui lui, est un vrai tableau qui fonctionne.

Ma question est donc : est-il possible d'indiquer le nom d'un tableau sur lequel travailler, non pas directement avant les crochets d'indexation "[]" mais dans une variable dont on peut remplir la valeur avec le nom du tableau à traiter???

Bravo à ceux qui comprendront la question, déja!!

Merci à ceux qui tenteront une réponse!!