Classe Arco :
codice:
//classe Arco
public class Arco implements Serializable{
//campi
//i due id dei nodi
public int IDNodo1=-1,IDNodo2=-1;
//peso o id dell'arco
public int pesoArco=-1;
//stato dell'arco
public enum stato{rejected,branch,basic};
public stato statoArco;
//costruttore
public Arco(int n1,int n2,int peso,Arco.stato stato){
IDNodo1=n1;
IDNodo2=n2;
pesoArco=peso;
statoArco=stato;
}
//get/set
public int getIDNodo1() {
return IDNodo1;
}
public void setIDNodo1(int iDNodo1) {
IDNodo1 = iDNodo1;
}
public int getIDNodo2() {
return IDNodo2;
}
public void setIDNodo2(int iDNodo2) {
IDNodo2 = iDNodo2;
}
public stato getStatoArco() {
return statoArco;
}
public void setStatoArco(stato sArco) {
statoArco = sArco;
}
public int getPesoArco() {
return pesoArco;
}
public void setPesoArco(int peso) {
pesoArco = peso;
}
}
Classe Remota :
codice:
public class InterfacciaRemotaDMSTImpl extends UnicastRemoteObject implements InterfacciaRemotaDMST,Runnable{
//campi
//lista archi incidenti sul nodo
public ArrayList listaArchiIncidenti;
...
//wakeup
public void wakeup() throws RemoteException{
//nodo adiacente al nodo 1
InterfacciaRemotaDMST nodo5=RRServer.getRRNodoById(5);
//ottengo l'arraylist degli archi incidenti al nodo 5
ArrayList archinodo5=nodo5.getListaArchiIncidenti();
//arco di peso minimo incidente sul nodo 5
Arco b=((Arco)archinodo5.get(1));
//modifico lo stato
b.setStatoArco(Arco.stato.rejected);
se listo lo stato degli archi incidenti al nodo 5 tale arco risulta modificato ma risulta modificato anche sul nodo adiacente 1,nel relativo arraylist.
perchè la modifica non è rimasta locale all'arraylist sul nodo 5?