Junior — Middle
Koje aspekte treba uzeti u obzir prilikom pravljenja kopije objekta nepromenljive klase?
sobes.tech АИ
Одговор од АИ
Za nemenjivu (immutable) klasu, kreiranje kopije objekta obično ne zahteva duboko kloniranje, jer se stanje objekta ne menja nakon kreiranja.
Glavni aspekti:
- Ako je klasa zaista nemenjiva, može se jednostavno vratiti referenca na isti objekat, jer se neće menjati.
- Ako je potrebno kreirati novi objekat sa izmenjenim stanjem, obično se kreira nova instanca sa potrebnim parametrima.
- Važno je da sva polja budu final i sama po sebi nemenjiva (npr. String, primitivni tipovi ili nemenjive kolekcije).
Primer:
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() {
// Može se jednostavno vratiti this, jer je objekat nemenjiv
return this;
}
public ImmutablePoint withX(int newX) {
return new ImmutablePoint(newX, this.y);
}
}
Dakle, kopija nemenjivog objekta ili nije potrebna, ili se kreira kao novi objekat sa novim stanjem.