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