Bonjour,
Je viens de résoudre un problème d'affectation des variables dans une boucle for, et je me rends compte que je ne suis pas certain de comprendre ce qui se passe à 100%. Voici la boucle d'origine :
Pour le contexte, la méthode appelée par le service se contente de retourner un nouvel objet eager alors que les objets de la liste sont lazy loaded via hibernate. Le problème était qu'à la sortie de la boucle les objets contenus dans la liste étaient inchangés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
Si je me contente par contre de simplement changer un attribut de l'objetAssure, il n'y a aucun problème, j'obtiens bien le résultat attendu, avec chaque élément de la liste modifié correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
J'ai résolu le problème avec la boucle suivante :
J'affecte ici directement l'objet retourné par le service dans la liste sans passer par un objet créé par la boucle de type foreach et ma liste est bien modifiée à la sortie de la boucle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
Je pensais que l'objetAssure de la boucle for pointait exactement à l'adresse de chaque objet de la liste et que par conséquent si j'affectais un nouvel objet à cette référence les objets contenus dans la liste seraient eux aussi modifiés. Visiblement mon raisonnement était faux, c'est pourquoi je fais appel à vos services pour m'éclairer quelque peu sur la portée et l'allocation des variables dans les boucles. Ce qui me perturbe le plus est le fait que ce raisonnement marche pour la modification d'attributs de l'objet mais pas pour la réaffectation complète de l'objet.
A noter que j'obtiens exactement les mêmes comportement avec des iterateurs explicites tels que :Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6

 

 
		
		 
         
 

 
			
			



 Portée et allocation des variables dans les boucles
 Portée et allocation des variables dans les boucles
				 Répondre avec citation
  Répondre avec citation

 
  
  
 
 
			 
   
 
 )
)
						 La plupart des réponses à vos questions sont déjà dans les
 La plupart des réponses à vos questions sont déjà dans les  Et on apprend tous les jours... même ce qui peut paraître évident après coup.
 Et on apprend tous les jours... même ce qui peut paraître évident après coup.
						

 
 
Partager