Как выясняется, это не законно сравнить примитив с выражением типа времени компиляции «Объект». JLS 15.21 прямо запрещает это:
Операторы равенства может быть использован для сравнения двух операндов, которые являются складными (§5.1.8) для числового типа, или два операнда типа булевой или Boolean, или два операнда, которые каждый из либо ссылочный тип или нулевой тип. Все остальные случаи приводят к ошибке времени компиляции.
Компилятор Eclipse отмечает ошибку независимо от версии Java.Для Java 7 оба Oracle JDK и OpenJDK ошибочно позволяют компилировать код. Этот bug в Oracle и Open JDKs исправлен в версии 8.
Таким образом, это неудобное сравнение является незаконным в соответствии со спецификацией и будет компилироваться только на некоторых подмножествах компиляторов для определенного подмножества целей языковой версии. Никогда не будет работать на Java 4- или 8+. Кастинговые преобразования, упомянутые в других ответах, применимы только к оператору '=', а не к '=='. 15.21.3 применяется только к двум опорным операндам.
проверьте этот предыдущий пост, [разница в autoboxing java6 и java7] (http://stackoverflow.com/questions/16119638/differences-in-auto-unboxing-between-java-6-vs-java-7) – nachokk