Junior — Middle
Чӣ ҷиҳатҳоро бояд дар назар гирифт ҳангоми эҷоди нусхаи объекти синфи тағйирнопазир?
sobes.tech AI
Ҷавоб аз AI
Барои синфи номутобӣ (immutable), эҷоди нусхаи объект одатан талаб намекунад клонкунии амиқ, зеро ҳолати объект пас аз эҷод тағир намеёбад.
Асосӣ:
- Агар синф воқеан номутобӣ бошад, метавон ба осонӣ истинод ба ҳамон объектро баргардонед, зеро он тағир намеёбад.
- Агар лозим бошад, ки объект бо ҳолати тағирёбанда эҷод шавад, одатан як навъ намуна бо параметрҳои зарурӣ эҷод мешавад.
- Муҳим аст, ки ҳама майдонҳо final бошанд ва худи онҳо низ номутобӣ (масалан, String, намудҳои primitives ё коллексияҳои номутобӣ) бошанд.
Масалан:
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() {
// Мумкин аст ба осонӣ this-ро баргардонед, зеро объект номутобист
return this;
}
public ImmutablePoint withX(int newX) {
return new ImmutablePoint(newX, this.y);
}
}
Аз ин рӯ, нусхаи объект номутобӣ ё зарур нест ё ҳамчун объект нав бо ҳолати нав эҷод мешавад.