В следующем примере
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
Я не могу использовать -128
с (Integer)
, но я могу использовать (int) -128
.
Я всегда считал, что -128
имеет тип int
, а литье его с (int)
должно быть избыточным.
Ошибка в строке с i3
равна
cannot find symbol variable Integer
Я попробовал это с обновлением версии Java 6 и обновлением Java 7.
EDIT: вы получите то же поведение с +128
вместо -128
. Кажется, это путаница между унарными и двоичными операторами.