Autoboxing e Unboxing em Expressões
- Conversão Automática: O autoboxing (encapsular) e o unboxing (desencapsular) ocorrem automaticamente em expressões, conforme necessário.
Por exemplo:
Unboxing: Um objeto numérico sofre unboxing para executar cálculos.
Encapsulamento de Resultados: O resultado pode ser encapsulado novamente em um objeto.
Exemplo Prático:
Integer iOb = 99;
++iOb; // Unboxing, incremento, e encapsulamento do resultado.
iOb += 10; // Unboxing, soma de 10 e encapsulamento do resultado.
Integer iOb2 = iOb + (iOb / 3); // Unboxing, cálculo e reencapsulamento.
int i = iOb + (iOb / 3); // Apenas unboxing, sem encapsulamento.
Saída:
Original value of iOb: 99
After ++iOb: 100
After iOb += 10: 110
iOb2 after expression: 146
i after expression: 146
Uso em switch:
Objetos como Integer podem ser usados diretamente em instruções switch devido ao unboxing automático.
Integer iOb = 2;
switch(iOb) {
case 1: System.out.println("one"); break;
case 2: System.out.println("two"); break;
default: System.out.println("error");
}
Advertências sobre o Uso Excessivo de Encapsuladores
- Embora o autoboxing/unboxing facilite o uso de objetos em expressões, há sobrecarga de desempenho.
Exemplo de Uso Ineficiente:
Double a = 10.2, b = 11.4, c = 9.8;
Double avg = (a + b + c) / 3; // Opera com objetos Double em vez de double.
Esse código é funcional, mas ineficiente devido ao custo adicional do autoboxing/unboxing.
Recomendação
- Use encapsuladores de tipos (como Integer ou Double) somente quando a representação como objeto for essencial.
- Evite substituir os tipos primitivos desnecessariamente por encapsuladores.
- O objetivo do autoboxing/unboxing é simplificar a manipulação de objetos, não eliminar tipos primitivos.
Top comments (0)