Sobes.tech
Junior

Nədir dəyişməz obyektlər (immutable)?

sobes.tech Süni İntellekt

AI-dan cavab

Dəyişdirilə bilməyən obyektlər, yaradıldıqdan sonra vəziyyəti dəyişdirilə bilməz. Dəyişiklik cəhdində həmişə yeni obyekt yaradılır.

Java-da dəyişdirilməz siniflərə nümunələr:

  • String
  • Əsas təkərli qablar (Integer, Long, Boolean və s.)
  • Bəzi kolleksiyalar (Collections.unmodifiableList(), Guava-dan ImmutableList)

Üstünlüklər:

  • İplə təhlükəsizlik (birgə girişdə sinxronizasiya tələb etmir).
  • İstifadə asanlığı (obyektin vəziyyəti asanlıqla başa düşülür).
  • HashMap-də açar və ya Set-də element kimi istifadə oluna bilər (hashCode və equals() dəyişmir).
  • Keşləmə və təkrar istifadə ilə performansı artırır.

Əksikliklər:

  • Hər dəyişiklikdə yeni obyektin yaradılması tez-tez dəyişikliklər üçün səmərəli olmaya bilər.

Özünüz yaratmaq:

  • Sinfi final kimi elan edin.
  • Bütün sahələri özəl və final edin.
  • Setter metodları təmin etməyin.
  • Dəyişən sahələr üçün getter-lərdə, orijinal obyektlərə referans yerinə nüsxələrini qaytarın.
public final class ImmutablePerson {
    private final String name;
    private final int age;
    private final List<String> hobbies;

    public ImmutablePerson(String name, int age, List<String> hobbies) {
        this.name = name;
        this.age = age;
        // Xaricdən dəyişiklikləri qarşısını almaq üçün nüsxə yaradılır
        this.hobbies = new ArrayList<>(hobbies);
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public List<String> getHobbies() {
        // Dəyişdirilməz siyahı qaytarılır
        return Collections.unmodifiableList(hobbies);
    }
}