Middle
Quais são as razões para usar classes de empacotamento?
sobes.tech IA
Resposta da IA
- Trabalho com coleções: Os tipos de dados primitivos (int, double, etc.) não podem ser armazenados em coleções Java (como
ArrayList,HashMap,HashSet), que funcionam apenas com objetos. As classes envolventes fornecem uma representação de objeto dos tipos primitivos. - Trabalho com null: Os tipos primitivos não podem ter o valor
null, enquanto as classes envolventes podem. Isso é útil quando o valor de um atributo pode ser desconhecido ou ausente. - Métodos da classe: As classes envolventes oferecem métodos úteis para trabalhar com os valores primitivos correspondentes, por exemplo, parsing de strings (
Integer.parseInt(),Double.parseDouble()) ou comparação de valores (Integer.compare()). - Autoboxing/Unboxing: Essa capacidade permite que o compilador converta automaticamente tipos primitivos em suas classes envolventes e vice-versa, simplificando o código.
- Genéricos: Em Java, os genéricos funcionam apenas com objetos, não com tipos primitivos. Para criar coleções ou métodos que trabalhem com tipos numéricos ou outros primitivos, usam-se as classes envolventes.
- Trabalho em I/O (entrada/saída): Alguns fluxos de entrada/saída em Java trabalham com objetos, exigindo o uso de classes envolventes.
- Sincronização: Em programação multithread, o bloqueio (
synchronized) só pode ser aplicado a objetos, não a tipos primitivos.
Exemplo de uso de uma classe envolvente em uma coleção:
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(10); // Autoboxing: int 10 é convertido em Integer
int firstNumber = numbers.get(0); // Unboxing: o objeto Integer é convertido de volta em int
Exemplo de método de uma classe envolvente:
String str = "123";
int num = Integer.parseInt(str); // Uso de método estático para parsing