Sobes.tech
Junior — Middle

Kādus aspektus būtu jāņem vērā, veidojot neizmaināmas klases objekta kopiju?

sobes.tech AI

Atbilde no AI

Nemaināmas (immutable) klases objekta parasti nav nepieciešams dziļš klons, jo objekta stāvoklis pēc izveides nemainās.

Galvenie aspekti:

  • Ja klase patiešām ir nemaināma, var vienkārši atgriezt to pašu objekta atsauci, jo tas nemainīsies.
  • Ja nepieciešams izveidot jaunu objektu ar mainītu stāvokli, parasti tiek izveidots jauns instances ar nepieciešamajiem parametriem.
  • Ir svarīgi, lai visi lauki būtu final un paši par sevi nemaināmi (piemēram, String, primitīvi tipi vai nemaināmas kolekcijas).

Piemērs:

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() {
        // Var vienkārši atgriezt this, jo objekts ir nemaināms
        return this;
    }

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

Tādējādi, nemaināmas objekta kopija vai nu nav nepieciešama, vai tā tiek izveidota kā jauns objekts ar jaunu stāvokli.