Come risulta, è non legale per confrontare una primitiva con un'espressione di tipo "Object" in fase di compilazione. JLS 15.21 vieta espressamente:
Gli operatori di uguaglianza può essere utilizzata per confrontare due operandi pari convertibile (§5.1.8) di tipo numerico, o due operandi di tipo boolean o booleana, o due operandi che sono ciascuno di entrambi tipo di riferimento o il tipo null. Tutti gli altri casi generano un errore in fase di compilazione.
Il compilatore Eclipse segnala l'errore indipendentemente dalla versione di Java.Per Java 7, sia Oracle JDK che OpenJDK consentono erroneamente la compilazione del codice. Questo bug in Oracle e Open JDKs è corretto nella versione 8.
In sintesi, questo confronto vistoso è illegale in base alle specifiche e verrà compilato solo su alcuni sottoinsiemi di compilatori per un determinato sottoinsieme di obiettivi di versione lingua. Non funzionerà mai su Java 4- o 8+. Le conversioni di casting indicate in altre risposte si applicano solo all'operatore '=', non a '=='. 15.21.3 si applica solo a due operandi di riferimento.
fonte
2013-09-12 03:39:54
controllare questo post precedente, [differenza di autoboxing java6 e java7] (http://stackoverflow.com/questions/16119638/differences-in-auto-unboxing-between-java-6-vs-java-7) – nachokk