En el siguiente ejemplo
int i = -128;
Integer i2 = (Integer) i; // compiles
Integer i3 = (Integer) -128; /*** Doesn't compile ***/
Integer i4 = (Integer) (int) -128; // compiles
Integer i4 = -128; // compiles
Integer i5 = (int) -128; // compiles
Integer i6 = (Integer) (-128); // compiles
Integer i7 = (Integer) 0-128; // compiles
No puedo fundido -128con (Integer)pero puedo fundido (int) -128.
Siempre pensé que -128era de inttipo y lanzarlo (int)debería ser redundante.
El error en la línea con i3es
cannot find symbol variable Integer
Intenté esto con Java 6 actualización 29 y Java 7 actualización 1.
EDITAR: Obtiene el mismo comportamiento con en +128lugar de -128. Parece ser una confusión entre operadores unarios y binarios.
Integer i3 = (Integer) (-128);cumple sin embargo.
Expression expecteddonde Integerestá.
Integer i = -128;esto debería compilar, sin embargo.