problem moze byt v tom, ze si spravil shallow ( plytky? ) klon a potrebujes deep. pri prvej moznosti sa nakopiruju len referencie, takze sa to navonok ksichti ako dva objekty ale v skutocnosti ukazuju na jedno a to iste miesto. Ty potrebujes hlboku kopiu, ta vytvori uplne novy objekt s rovnakymi parametrami.
ked sa nechces srat s klonovanim sprav to ako svina, ze natvrdo vytvoris novy objekt, nakopirujes donho atributy stareho a novy ulozis do databaze, over and out. toto musi fungovat
Kód: Vybrať všetko
public class tovar {
private String nazov;
private String popis;
private int cena;
private int mnozstvo=0;
public tovar(String n, String p, int c, int m)
{
nazov = n;
popis = p;
cena = c;
mnozstvo = m;
}
public void setNazov(String nazov) {
this.nazov = nazov;
}
public String getNazov() {
return nazov;
}
public void setPopis(String popis) {
this.popis = popis;
}
public String getPopis() {
return popis;
}
public void setCena(int cena) {
this.cena = cena;
}
public int getCena() {
return cena;
}
public void setMnozstvo(int mnozstvo) {
this.mnozstvo = mnozstvo;
}
public int getMnozstvo() {
return mnozstvo;
}
}
Kód: Vybrať všetko
public class main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<tovar> list = new ArrayList<tovar>();
tovar t1 = new tovar("Jablko","",12,15);
tovar t2 = new tovar("Slon","",50,20);
tovar t3 = new tovar("Lol","",30,45);
tovar t4 = new tovar(t1.getNazov(),t1.getPopis(),t1.getMnozstvo(),t1.getCena());
list.add(t1);
list.add(t2);
list.add(t3);
list.add(t4);
t1.setNazov("Hruska");
for (tovar tv : list) {
System.out.println(tv.getNazov());
}
}
}