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.