В следующем примере
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
IS
cannot find symbol variable Integer
Я пробовал это с обновлением Java 6 29 и обновлением Java 7 1.
РЕДАКТИРОВАТЬ: вы получаете то же поведение +128
вместо -128
. Похоже, что это путаница между унарными и бинарными операторами.
Integer i3 = (Integer) (-128);
хотя и соответствует.
Expression expected
там Integer
.
Integer i = -128;
однако это должно компилироваться.