Sobes.tech
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);
    }
}

Ошондуктан, өзгөртүлбөс объекттин көчүрмөсү же керек эмес, же жаңы абал менен жаңы объект түзүлөт.