Originariamente inviato da manuel_samele
-.- non sta a te giudicare!
io ti ho già detto che ho pensato a questa soluzione, ma non mi sembrava potesse essere così perchè se fosse realmente questa allora in output al termine di tutto il vector dovrebbe contenere un solo oggetto, invece ne ha due, come dovrebbe se due sono le persone inserite, solo che la seconda sovrascrive la prima.
forse ti manca il concetto di italiano....
La considerazione fatta da Vincenzo deriva da quello che hai scritto.
Senza offesa, ma non sembra che tu abbia ben chiaro cosa fa l'istruzione new e cosa fa il metodo add() di Vector.
Se io istanzio un oggetto (istruzione new), in memoria avrò un oggetto.
Questo oggetto io lo posso inserire infinite volte dentro ad un Vector ed il vector si riempirà di "n" posizioni tutte riferite allo stesso oggetto. Quindi, se io richiamo il metodo "add()" di Vector 10 volte, passandogli sempre lo stesso oggetto, il Vector conterrà 10 volte lo stesso oggetto.
Se richiedo la stampa del contenuto del Vector, questa mi produrrà 10 volte la stessa cosa.
Quindi, la soluzione proposta da Vincenzo è corretta: devi istanziare (ovvero fare una new) ogni volta un nuovo oggetto dentro al ciclo, altrimenti ogni volta andrai a sovrascrivere i dati preesistenti e tutte le copie del Vector vedranno queste modifiche (quello che tu hai interpretato come una "sovrascrittura", in realtà è solo una riflessione delle modifiche fatte).
Provo a spiegarlo con un esempio:
codice:
Vector v = new Vector();
Persona p = new Persona("Amerigo", "Vespucci", "Marinaio");
v.add( p );
p.setCognome("Garibaldi");
p.setNome("Giuseppe");
p.setMansione("Combattente");
v.add( p );
La prima riga crea il Vector.
La seconda riga crea un oggetto "Persona"
La terza riga inserisce la persona nel Vector
Le righe dalla quarta alla sesta, modificano la persona (anche quella nel Vector, perchè è un riferimento, non una copia!)
La settima riga inserisce un'altra volta l'oggetto persona (sempre lo stesso!!!) nel Vector.
Risultato: nel Vector ci sono due copie dello stesso indirizzo e questo indirizzo punta allo stesso identico oggetto Persona.
Il secondo inserimento non ha sovrascritto il primo. Sono state le 3 righe precedenti, a modificare i dati.
Ciao.