Nell'esempio seguente
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
Non posso lanciare -128
con (Integer)
ma posso lanciare (int) -128
.
Ho sempre pensato che -128
fosse di int
tipo e lanciarlo con (int)
dovrebbe essere ridondante.
L'errore sulla riga con i3
è
cannot find symbol variable Integer
L'ho provato con l'aggiornamento 29 di Java 6 e l'aggiornamento 1 di Java 7.
EDIT: ottieni lo stesso comportamento con +128
invece di -128
. Sembra esserci confusione tra operatori unari e binari.
Integer i3 = (Integer) (-128);
conforme però.
Expression expected
dove si Integer
trova.
Integer i = -128;
questo dovrebbe essere compilato, però.