Tienes que lidiar con el auto-boxing de java.
Tomemos el código
prueba de clase pública
{
public static void main (String [] args)
{
int i = 3;
Objeto o = i;
regreso;
}
}
Obtiene la clase test.class y
javap -c test le permite inspeccionar el bytecode generado.
Compilado a partir de "test.java"
prueba de clase pública extiende java.lang.Object {
prueba pública ();
Código:
0: aload_0
1: invocarespecial # 1; // Método java / lang / Object. "" :() V
4: regreso
public static void main (java.lang.String []);
Código:
0: iconst_3
1: istore_1
2: iload_1
3: invocaestático # 2; // Método java / lang / Integer.valueOf: (I) Ljava / lang / Integer;
6: astore_2
7: regreso
}
Como puede ver, el compilador java agregado
invokestático # 2; // Método java / lang / Integer.valueOf: (I) Ljava / lang / Integer;
para crear un nuevo entero desde su int y luego almacena
ese nuevo objeto en o a través de astore_2
int.class.isPrimitive()
rendimientostrue
;Integer.class.isPrimitive()
rendimientosfalse
.