Sobes.tech
Middle

Quais são as razões para usar wrappers (classes Wrapper) na programação?

sobes.tech IA

Resposta da IA

As classes envoltórias (Wrapper) são usadas para os seguintes propósitos:

  • Conversão de tipos primitivos em objetos: Em Java e outras linguagens que possuem tipos de dados primitivos (int, boolean, float, etc.) e objetos, as classes envoltórias permitem trabalhar com primitivos como objetos. Isso é necessário, por exemplo, para usá-los em coleções (List, Map), que armazenam apenas objetos.
  • Fornecer métodos adicionais: As classes envoltórias frequentemente oferecem métodos úteis para trabalhar com os tipos primitivos correspondentes. Por exemplo, Integer possui métodos para analisar strings em números, converter para diferentes sistemas de numeração, etc.
  • Manipulação de valores null: Os objetos envoltórios podem armazenar null, o que não é possível com tipos primitivos. Isso é importante ao trabalhar com bancos de dados ou fontes externas de dados, onde os campos podem estar vazios.
  • Genéricos: Ao trabalhar com genéricos (por exemplo, List<Integer>, Map<String, Boolean>), é necessário usar classes em vez de tipos primitivos. As envoltórias permitem usar tipos parametrizados com valores primitivos.
  • Autoboxing e unboxing automáticos: Em Java, existe um mecanismo de conversão automática entre tipos primitivos e suas classes envoltórias correspondentes, o que simplifica a escrita do código.
// Exemplo de Autoboxing e Unboxing
Integer i = 10; // Autoboxing: o int 10 é convertido automaticamente em Integer
int j = i;      // Unboxing: o Integer i é convertido automaticamente em int
  • Criação de objetos imutáveis: As envoltórias são frequentemente usadas para criar representações imutáveis de tipos primitivos. Por exemplo, objetos da classe String ou classes envoltórias para primitivos são imutáveis.
  • Uso em fluxos de entrada/saída: Alguns fluxos de entrada/saída (por exemplo, ObjectOutputStream) funcionam apenas com objetos, o que requer o uso de envoltórias para gravar dados primitivos.