Sobes.tech
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ă.