Autoboxing e Unboxing no Java
Por: Marco R.
04 de Setembro de 2020

Autoboxing e Unboxing no Java

Computação Geral Java Java

Autoboxing é um recurso do compilador Java, presente desde o JDK 5, que faz a conversão entre tipos primitivos de dados e os respectivos objetos cujas classes acondicionam um determinado tipo primitivo. Por exemplo, converter um tipo primitivo int em um objeto cuja classe é Integer. O processo inverso é chamado de unboxing.

Dentro pacote java.lang, o Java oferece uma classe separada (wrapper class) que representa cada tipo primitivo de dado: Byte, Boolean, Character, Double, Integer, Float, Long e Short.

O compilador Java aplica autoboxing quando um valor primitivo é atribuído a uma variável do tipo wrapper class correspondente. Exemplo:

//Autoboxing
Integer num = 10;

No exemplo acima, a classe Integer representa um tipo numérico inteiro na forma de objeto (num), ou seja, ela empacota o tipo primitivo de dado int, por isso o nome wrapper class para este tipo de classe.

O compilador Java também aplica autoboxing em outra situação: quando um valor primitivo é passado como parâmetro em um método que espera por um objeto da wrapper class correspondente. Exemplo:

...

//Autoboxing

obj.soma(10, 15);

...


public Integer soma(Integer num1, Integer num2) {

     return num1 + num2;
}

Unboxing é o processo inverso do autoboxing, convertendo um objeto proveniente de uma classe que acondiciona um tipo primitivo para um valor primitivo. Para exemplificar o emprego de unboxing, basta fazer o oposto dos exemplos de autoboxing.

Integer objInt = new Integer(10);

//Unboxing
int num = objInt;

Também no caso de passagem de parâmetros de uma função que espera por um tipo primitivo, mas um objeto da wrapper class correspondente é passado como parâmetro

...


//Unboxing

obj.soma(new Integer(10), new Integer(15));

...


public int soma(int num1, int num2) {

     return num1 + num2;
}

Por isso este processo é chamado de unboxing, a classe é desempacotada e o tipo primitivo que ela representa é extraído de dentro do objeto em questão.

Autoboxing e Unboxing permitem os desenvolvedores escreverem um código mais claro, facilitando a leitura do mesmo. Mas devemos tomar certos cuidados como, por exemplo, não misturar tipos primitivos e objetos ao fazer comparações, pois podemos obter resultados imprevisíveis. Outro ponto é o processamento extra quando utilizamos wrapper classes; elas são mais “pesadas” que qualquer tipo primitivo que está sendo representado, por isso wrapper classes devem ser utilizadas com parcimônia para não pôr em xeque o desempenho da aplicação.

Cadastre-se ou faça o login para comentar nessa publicação.

Confira artigos similares

Confira mais artigos sobre educação

+ ver todos os artigos

Encontre um professor particular

Busque, encontre e converse gratuitamente com professores particulares de todo o Brasil