Je dois passer une liste d'objets d'un PC vers un autre.
Mes informations circulent via un ObjectOutputStream/ObjectInputStream de la manière suivante :

Connexion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
ServerSocket socketServeur = new ServerSocket(COMMUNICATION_PORT);
 
Socket socketClient = this.socketServeur.accept();
 
ObjectOutputStream flux = new ObjectOutputStream(socketClient.getOutputStream());
Envoie de la Situation tactique mise à jour : Les attributs des objets (de type Mobile) sont modifiés avant chaque nouvel appel de la fonction
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
19
public void envoyerSITAC(Mission mission) {
 
	try {
 
		ArrayList messageAEnvoyer = new ArrayList();	
 
		for (int i = 0 ; i < mission.getNbMobiles ; i++) {
 
			messageAEnvoyer.add(mission.getMobile(i));
		}
 
		flux.writeObject(messageAEnvoyer);
		flux.flush();
 
	} catch (IOException e) {
 
		e.printStackTrace();			
	} 			
}
De l'autre côté le flux est exploité de la manière suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
ObjectInputStream flux = new ObjectInputStream( new BufferedInputStream(clientSocket.getInputStream()));
 
ArrayList messageRecuDuServeur = (ArrayList) flux .readObject();
 
Mobile mobile = (Mobile) (messageRecuDuServeur.get(i));

Mon problème est le suivant :
Les attributs des mobiles que je reçoit ne sont pas mis à jour, je ne reçoit que les 'anciennes' version des objets.
J'ai l'impression que comme les references de ces objets ne sont pas modifiées,
le flux ne met pas à jour les nouvelles valeurs des attributs et conserve les anciennes valeurs.

Y a t'il un moyen de spécifier ce changement sans avoir à crée une copie (donc une nouvelle reference) de chacun des mobile que je veux envoyer ?

Merci
M@tth