Давайте рассмотрим следующие выражения в Java.
int temp = -254;
Integer temp2 = (Integer) temp; // compiles because of autoboxing
Integer temp3 = (Integer) -254; // doesn't compile - illegal start of type.
Integer temp4 = (Integer) 10-254; // compiles
Integer temp5 = (Integer) (int) -254; // compiles
Integer temp6 = -254; // compiles
Integer temp7 = (int) -254; // compiles
В вышеприведенных выражениях почему эти выражения (Integer) 10-254
и (int) -254
допустимы, тогда как выражение (Integer) -254
не компилируется, даже есликонстанта -254
может быть отлично оценена до Integer
?