Sobes.tech
Junior — Middle

Dəyişməz sinifin obyektinin nüsxəsini yaradarkən hansı aspektlər nəzərə alınmalıdır?

sobes.tech Süni İntellekt

AI-dan cavab

Dəyişməz (immutable) sinif üçün obyektin surətini yaratmaq adətən dərin klonlama tələb etmir, çünki obyektin vəziyyəti yaradıldıqdan sonra dəyişmir.

Əsas aspektlər:

  • Əgər sinif həqiqətən dəyişməzdirsə, sadəcə həmin obyektə istinad qaytarmaq olar, çünki o dəyişməz qalacaq.
  • Əgər dəyişdirilmiş vəziyyətlə yeni obyekt yaratmaq lazımdırsa, adətən lazım olan parametrlərlə yeni nümunə yaradılır.
  • Bütün sahələrin final və özlərinin də dəyişməz olması vacibdir (məsələn, String, primitiv tiplər və ya dəyişməz kolleksiyalar).

Nümunə:

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() {
        // Bu obyekt dəyişməz olduğu üçün, sadəcə this qaytarıla bilər
        return this;
    }

    public ImmutablePoint withX(int newX) {
        return new ImmutablePoint(newX, this.y);
    }
}

Beləliklə, dəyişməz obyektin surəti ya lazım deyil, ya da yeni vəziyyətlə yeni obyekt kimi yaradılır.