Você tem que lidar com o auto-boxing de java.
Vamos pegar o código
teste de classe pública
{
public static void main (String [] args)
{
int i = 3;
Objeto o = i;
Retorna;
}
}
Você obtém a classe test.class e
javap -c test para inspecionar o bytecode gerado.
Compilado de "test.java"
teste de classe pública estende java.lang.Object {
teste público ();
Código:
0: aload_0
1: invoca # 1 especial; // Método java / lang / Object. "" :() V
4: retorno
public static void main (java.lang.String []);
Código:
0: iconst_3
1: istore_1
2: iload_1
3: invokestatic # 2; // Método java / lang / Integer.valueOf: (I) Ljava / lang / Integer;
6: astore_2
7: retorno
}
Como você pode ver, o compilador java adicionado
invokestatic # 2; // Método java / lang / Integer.valueOf: (I) Ljava / lang / Integer;
para criar um novo inteiro a partir de seu int e, em seguida, armazena
esse novo objeto em o via astore_2
int.class.isPrimitive()
rendimentostrue
;Integer.class.isPrimitive()
rendimentosfalse
.