Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Autoboxing e boxing

O que significa autoboxing ou boxing de tipos primitivos?

1 resposta
solução!

Oi Felipe, tudo bem?

Existem alguns momentos que precisamos representar um tipo primitivo como um objeto.

O método add() de uma lista, por exemplo recebe um Object. Exemplo:

Aluno a1 = new Aluno();
Aluno a2 = new Aluno();

List alunos = new ArrayList();
alunos.add(aluno1);
alunos.add(aluno2);

Quando estamos lidando com objetos, é ok, mas como fazer para ter uma lista de int (tipo ptimitivo) por exemplo?

int num1 = 10;
int num2 = 42;

List numeros = new ArrayList();
numeros.add(num1); // num1 é um primitivo!
numeros.add(num2); // num2 tambem

Por esse motivo, o Java possui uma classe chama Integer, que serve para representarmos um int como um objeto.

Dizemos que essa classe é um wrapper, que envolve um primitivo int e faz com que eu consiga representá-lo como um objeto.

O boxing, é guardar esse primitivo "dentro" da sua classe:

Integer num1 = new Integer(10);
Integer num2 = new Integer(42);

List numeros = new ArrayList();
numeros.add(num1);
numeros.add(num2);

O unboxing é quando precisamos obter o primitivo novamente:

int meuPrimitivo = num1.intValue();

Como é meio chato ficar criando objetos do tipo Integer, ou pegando primitivos int a partir dos objetos, o compilador faz isso de forma automática. Então você pode simplesmente passar um primitivo onde é esperado um objeto (e vice-versa) e o java vai fazer essa conversão para você. Isso é o que se chama de autoboxing:

List numeros = new ArrayList();
numeros.add(10);
numeros.add(12);

Existem classes wrapper pra cada um dos tipos primitivos existentes no java.

Você pode ver mais sobre isso aqui

Abraço!