Sobes.tech
Junior

O que são objetos imutáveis?

sobes.tech IA

Resposta da IA

Objetos imutáveis são objetos cujo estado não pode ser alterado após a criação. Qualquer operação que pareça modificar tal objeto, na verdade cria um novo objeto com um estado alterado.

Vantagens:

  • Previsibilidade: O estado do objeto não muda inesperadamente.
  • Segurança em múltiplas threads: Não há necessidade de bloqueios ao acessar de diferentes threads, pois não é possível alterar o estado.
  • Facilidade de depuração: É mais fácil rastrear o estado do objeto durante a execução.
  • Otimizações: Algumas operações podem ser armazenadas em cache, pois o resultado não mudará.

Exemplos em Dart/Flutter:

  • Tipos primitivos: int, double, bool, String.
  • Classes criadas usando a palavra-chave const (para criar instâncias constantes, que são imutáveis) ou com campos final (para criar instâncias imutáveis após a inicialização).
// Exemplo de objeto String imutável
String name = "Flutter";
// A operação seguinte cria uma nova string, não altera 'name'
name = "Dart"; 

// Exemplo de classe imutável com campos final
class Point {
  final int x;
  final int y;

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

// Criando uma instância imutável
const Point origin = Point(0, 0);
// origin.x = 5; // Erro de compilação - campo final não pode ser alterado