W poniższym przykładzie
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
Nie mogę rzucić -128
z (Integer)
ale mogę rzucić (int) -128
.
Zawsze myślałem, że -128
to int
typ i rzucanie go (int)
powinno być zbędne.
Błąd w wierszu z i3
to
cannot find symbol variable Integer
Próbowałem tego z aktualizacją Java 6 29 i aktualizacją Java 7 1.
EDYCJA: Otrzymujesz to samo zachowanie z +128
zamiast -128
. Wydaje się, że jest to zamieszanie między operatorami jednoargumentowymi i binarnymi.
Integer i3 = (Integer) (-128);
chociaż się zgadza.
Expression expected
tam, gdzie Integer
jest.
Integer i = -128;
to powinno się jednak skompilować.