Junior — Middle
Aké aspekty je potrebné zvážiť pri vytváraní kópie objektu nemennej triedy?
sobes.tech AI
Odpoveď od AI
Pre nehybných (immutable) tried je vytvorenie kópie objektu zvyčajne nevyhnutné, ale zvyčajne nie je potrebné hlboké klonovanie, pretože stav objektu sa po vytvorení nemení.
Hlavné aspekty:
- Ak je trieda naozaj nehybná, môžete jednoducho vrátiť odkaz na ten istý objekt, pretože sa nezmení.
- Ak je potrebné vytvoriť nový objekt so zmeneným stavom, zvyčajne sa vytvorí nová inštancia s potrebnými parametrami.
- Je dôležité, aby všetky polia boli final a samy o sebe nehybné (napríklad String, primitívne typy alebo nehybné kolekcie).
Prí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 jednoducho vrátiť this, pretože objekt je nehybný
return this;
}
public ImmutablePoint withX(int newX) {
return new ImmutablePoint(newX, this.y);
}
}
Preto je kópia nehybného objektu buď zbytočná, alebo je vytvorená ako nový objekt s novým stavom.