Originariamente inviato da emaborsa
...domanda, solo per i tipi primitivi posso fare un semplice assegnamento vero? Dato che le stringhe sono pure Oggetti, l'esempio che ho fatto sopra non funziona.
Dovrei fare:
codice:
puclic Award(Award anAward){
this.award = new String(anAward.getPath());
}
o sbaglio?
Non è necessario, perchè gli oggetti String sono immutabili.
Infatti, in questo esempio:
codice:
public class Award {
public String s;
public Award(Award aw) {
this.s = aw.s;
}
public Award(String s){
this.s = s;
}
public static void main(String[] args) {
Award a = new Award("ciao");
Award b = new Award(a);
System.out.println("a : " + a.s);
System.out.println("b : " + b.s);
b.s = a.s.concat(" e").concat(" arrivederci"); // qui vengono generate 2 istanze, la seconda verrà riferita da b.s
System.out.println("a : " + a.s);
System.out.println("b : " + b.s);
}
}
ottieni l'effetto che desideri.
Cioè, modifichi l'istanza b senza che venga modificata anche a.