Sobes.tech
Junior — Middle

Milyen szempontokat kell figyelembe venni egy változatlan osztály objektumának másolatának készítésekor?

sobes.tech MI

Válasz az MI-től

Egy változatlan (immutable) osztály esetén az objektum másolatának létrehozása általában nem igényel mély másolást, mivel az objektum állapota a létrehozás után nem változik.

Fő szempontok:

  • Ha az osztály valóban változatlan, egyszerűen vissza lehet adni ugyanarra az objektumra mutató hivatkozást, mivel az nem fog változni.
  • Ha egy módosított állapotú új objektumot kell létrehozni, általában egy új példányt hozunk létre a szükséges paraméterekkel.
  • Fontos, hogy minden mező végleges (final) legyen és önmagában is változatlan (pl. String, primitív típusok vagy változatlan kollekciók).

Példa:

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() {
        // Egyszerűen vissza lehet adni ezt, mivel az objektum változatlan
        return this;
    }

    public ImmutablePoint withX(int newX) {
        return new ImmutablePoint(newX, this.y);
    }
}

Így az immutábilis objektum másolata vagy nem szükséges, vagy új állapottal új objektumként jön létre.