Почему автобокс помечен как предупреждение? - PullRequest
12 голосов
/ 23 ноября 2011

Я понимаю, что автоматическая распаковка должна выполняться с осторожностью, потому что ссылка, которая распаковывается, может быть нулевой. Почему автобокс также помечен как предупреждение? Есть ли какие-то подводные камни, которые я здесь пропускаю?

Ответы [ 3 ]

6 голосов
/ 22 октября 2013

Я собирался отключить это предупреждение Eclipse, но следующая статья заставила меня не думать об этом. Я все еще не совсем уверен, но мне кажется, что это может быть вескими причинами, чтобы просто избегать автобокса.

https://effective -java.com / 2010/05 / в-преимущества-и-ловушки-из-Autoboxing /

6 голосов
/ 23 ноября 2011

Если вы не ожидаете проблем с производительностью (с точки зрения микрооптимизации), вы можете безопасно отключить это предупреждение. Это всего лишь указание на случай, если вы не знаете, что здесь происходит автобокс. В коде бизнес-логики, где у вас есть издержки ввода-вывода (из-за транзакций с БД или доступа к диску), автобокс вряд ли становится проблемой производительности.

3 голосов
/ 05 февраля 2014

Автобокс может помочь разработчику создать ошибку, связанную с методом удаления коллекций, хотя это, вероятно, довольно неясная ошибка.

Я столкнулся с этой ошибкой, когда использовал генератор случайных чисел для выбора индекса элемента, который необходимо удалить из ArrayList. Генератор возвратил длинный примитив, который я случайно попытался использовать в качестве параметра для List.remove (int index). Компилятор преобразовал long в Long и использовал его в List.remove (Object o), который дал совершенно другое поведение. К счастью, оператор assert быстро уловил ошибку.

Согласно этому обсуждению этой проблемы с «удалить», кто-то еще столкнулся с подобной проблемой, где их int неожиданно действовал как Integer, хотя я не понимаю, как это произошло. Почему Java Collections не являются универсальными методами удаления? (см. комментарий ScArcher2)

...