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.