Sobes.tech
Junior — Middle

Qual é a diferença entre o uso de dynamic, var e Object na definição de tipos de dados numa linguagem de programação?

sobes.tech IA

Resposta da IA

Na linguagem Dart (usada no Flutter), dynamic, var e Object têm características diferentes:

  • var — variável com tipo implícito, o tipo é determinado na inicialização e depois fixado. Por exemplo:
var x = 10; // x — int
x = 20; // OK
x = 'string'; // Erro de compilação
  • dynamic — variável cujo tipo é verificado em tempo de execução, o compilador não verifica os tipos ao atribuir ou chamar métodos:
dynamic y = 10;
y = 'string'; // OK
print(y.length); // Erro só em tempo de execução se length não existir
  • Object — classe base para todos os tipos, uma variável do tipo Object pode conter qualquer objeto, mas para chamar métodos específicos, é necessário fazer uma conversão de tipo:
Object z = 10;
// z.length; // Erro de compilação
if (z is String) {
  print(z.length); // OK após verificar o tipo
}

Resumindo:

  • var — o tipo é fixado na inicialização.
  • dynamic — desativa a verificação de tipos, flexível, mas menos seguro.
  • Object — tipo base, requer conversão explícita para operações específicas.