Sobes.tech
Junior — Middle

Jaké aspekty je třeba zvážit při vytváření kopie objektu neměnné třídy?

sobes.tech AI

Odpověď od AI

Pro třídu nemměnnou (immutable) obvykle tvorba kopie objektu nevyžaduje hluboké klonování, protože stav objektu se po vytvoření nemění.

Hlavní aspekty:

  • Pokud je třída skutečně neměnná, lze jednoduše vrátit odkaz na stejný objekt, protože se nezmění.
  • Pokud je potřeba vytvořit nový objekt se změněným stavem, obvykle se vytvoří nová instance s potřebnými parametry.
  • Je důležité, aby všechna pole byla final a sama o sobě neměnná (například String, primitivní typy nebo neměnné kolekce).

Příklad:

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() {
        // Můžeme jednoduše vrátit this, protože objekt je neměnný
        return this;
    }

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

Proto je kopie neměnného objektu buď zbytečná, nebo je vytvořena jako nový objekt s novým stavem.