Автобокс автоматически преобразует типы данных между внутренними типами и типами объектов.
Типы объектов для логического значения могут быть Boolean.TRUE
, Boolean.FALSE
или null
. Вот почему вы должны иметь дело с возможными 3 значениями для логического значения.
В базах данных обычно существует три состояния для логического типа. Рассмотрим запись, которая отслеживает, прошел ли кто-то класс. Есть ИСТИНА, для прохождения; ЛОЖЬ для не прохождения, и НЕДЕЙСТВИТЕЛЬНЫЙ для «в настоящее время взятие класса». Да, это странно, но отсутствие значения наследуется в объектно-ориентированном программировании.
Я тоже нахожу автобокс немного неприятным, в основном потому, что это особенность, когда компилятор добавляет байт-код для управления процессом преобразования. На мой взгляд, это может привести к тому, что люди забудут о важных деталях процесса конвертации, которые лучше запомнить (например, об обработке нуля в вашем случае). Это полезно, но не так полезно, как большинство других функций языка Java.
Лично мне бы хотелось, чтобы встроенные функции были реализованы в виде легких объектов, а не "встроенных" типов. Во многих случаях мешает гибридная система внутренних / объектных типов. Тем не менее, встроенные функции должны были существовать для повышения производительности, но, похоже, что если вам необходимо многое сделать для маршаллинга объектов, вы не сможете насладиться повышением производительности только благодаря встроенным функциям.