Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida em relação aos construtores de algumas classes Wrappers

Oi,

Bem, todos sabem que podemos criar um Integer, por exemplo, de algumas formas:

1) Passando o valor pelo construtor, recebendo ou não parâmetros:

Integer x = new Integer();
Integer y = new Integer(200);

2) Recebendo valor de tipos primitivos:

int x = 10;
Integer a = x;

3) Recebendo diretamente, como se fosse a inicialização em um tipo primitivo:

Integer a = 10;

Esse 3º tipo de inicialização é meio confuso para mim... Alguém pode exemplificar e explicar como isso é "feito por trás dos panos"?

E como eu posso aplicar essa "forma de inicialização" as minhas classes, caso eu encontre algo semelhante onde eu possa adicionar isso?

Uma boa observação é ver que a classe String também tem essa "propriedade":

String a = "Example";
2 respostas
solução!

Oi Leonardo,

Quando você faz Integer a = 10, o que realmente acontece é Integer a = Integer.valueOf(10). Um jeito interessante de tirar essas dúvidas é executando o comando javap passando como argumento o arquivo .class. Por exemplo:

javap -v TesteInteger

Agora faz sentido, vi também que algumas coisas são feitas de forma "engessada" pelo próprio compilador, então não conseguimos realizar essas operações para as nossas classes.

Mas obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software