Sobes.tech
Back to questions
Junior
116
questionbank

Что такое иммутабельные объекты?

Sobes Copilot

Get answers in real time

Answer from AI

sobes.tech AI

Иммутабельные объекты — это объекты, состояние которых не может быть изменено после создания. Любая операция, которая, казалось бы, модифицирует такой объект, на самом деле создает новый объект с измененным состоянием.

Преимущества:

  • Предсказуемость: Состояние объекта не меняется неожиданно.
  • Потокобезопасность: Нет необходимости в блокировках при доступе из разных потоков, так как нет возможности изменить состояние.
  • Упрощение отладки: Легче отслеживать состояние объекта в процессе выполнения.
  • Оптимизации: Некоторые операции могут быть кэшированы, так как результат не изменится.

Примеры в Dart/Flutter:

  • Примитивные типы: int, double, bool, String.
  • Классы, созданные с использованием ключевого слова const (для создания константных экземпляров, которые являются иммутабельными) или с final полями (для создания неизменяемых экземпляров после инициализации).
// Пример иммутабельного объекта String
String name = "Flutter";
// Следующая операция создает новую строку, а не меняет 'name'
name = "Dart"; 

// Пример иммутабельного класса с final полями
class Point {
  final int x;
  final int y;

  const Point(this.x, this.y);
}

// Создание иммутабельного экземпляра
const Point origin = Point(0, 0);
// origin.x = 5; // Ошибка компиляции - final поле не может быть изменено