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 -128
với (Integer)
nhưng tôi có thể cast (int) -128
.
Tôi luôn nghĩ rằng đó -128
là một int
loại và đúc nó với (int)
nên là thừa.
Lỗi trên dòng với i3
là
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 +128
thay 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ù.