Лучше избегать ненужного автобокса по двум причинам.
Во-первых, это немного медленнее, чем int < int
, так как вы (иногда) создаете дополнительный объект;
void doSomethingWith(Integer integerObject){ ...
int i = 1000;
doSomethingWith(i);//gets compiled into doSomethingWith(Integer.valueOf(i));
Большая проблема в том, что скрытый автобокс может скрывать исключения:
void doSomethingWith (Integer count){
if (count>0) // gets compiled into count.intValue()>0
Вызов этого метода с помощью null
вызовет NullPointerException
.
Разделение между примитивами и объектами-обертками в java всегда описывалось как стремление к скорости. Автобокс почти скрывает это, но не совсем - чище просто следить за типом. Поэтому, если у вас есть объект Integer, вы можете просто вызвать compare()
или intValue()
, а если у вас есть примитив, просто проверьте значение напрямую.