Junior — Middle
Ce aspecte trebuie luate în considerare atunci când se creează o copie a unui obiect al unei clase imutabile?
sobes.tech AI
Răspuns de la AI
Pentru o clasă imutabilă, crearea unei copii a obiectului de obicei nu necesită clonare profundă, deoarece starea obiectului nu se schimbă după creare.
Aspecte principale:
- Dacă clasa este cu adevărat imutabilă, se poate returna pur și simplu referința la același obiect, deoarece nu se va schimba.
- Dacă trebuie creat un nou obiect cu o stare modificată, de obicei se creează o nouă instanță cu parametrii necesari.
- Este important ca toate câmpurile să fie finale și ele însele imutabile (de exemplu, String, tipuri primitive sau colecții imutabile).
Exemplu:
public final class ImmutablePoint {
private final int x;
private final int y;
public ImmutablePoint(int x, int y) {
this.x = x;
this.y = y;
}
public ImmutablePoint copy() {
// Se poate returna pur și simplu this, deoarece obiectul este imutabil
return this;
}
public ImmutablePoint withX(int newX) {
return new ImmutablePoint(newX, this.y);
}
}
Prin urmare, copia unui obiect imutabil fie nu este necesară, fie este creată ca un nou obiect cu o stare nouă.