No exemplo a seguir
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
Eu não pode lançar -128com (Integer)mas pode lançar (int) -128.
Eu sempre pensei que -128era do inttipo e lançá-lo com (int)deve ser redundante.
O erro na linha com i3é
cannot find symbol variable Integer
Eu tentei isso com o Java 6 atualização 29 e o Java 7 atualização 1.
Edição: Você obtém o mesmo comportamento com em +128vez de -128. Parece haver confusão entre operadores unários e binários.
Integer i3 = (Integer) (-128);cumpre.
Expression expectedonde Integerestá.
Integer i = -128;isso deve compilar, no entanto.