Trong ví dụ sau
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
Tôi không thể cast -128với (Integer)nhưng tôi có thể cast (int) -128.
Tôi luôn nghĩ rằng đó -128là một intloại và đúc nó với (int)nên là thừa.
Lỗi trên dòng với i3là
cannot find symbol variable Integer
Tôi đã thử điều này với Java 6 bản cập nhật 29 và Java 7 bản cập nhật 1.
CHỈNH SỬA: Bạn nhận được cùng một hành vi với +128thay vì -128. Dường như có sự nhầm lẫn giữa toán tử đơn phân và nhị phân.
Integer i3 = (Integer) (-128);tuân thủ mặc dù.
Expression expectedở đâu Integer.
Integer i = -128;điều này nên biên dịch, mặc dù.