Ненужный осмотр бокса, сообщаемый IDE

Ненужный осмотр бокса, сообщаемый IDE

Недавно я проверил код, который был опубликован в учебниках Oracle по Swing # JTable. Было несколько предупреждающих сообщений, которые были возвращены IntelIJ в отношении бокса примитивных переменных внутри многомерного массива, содержащего данные таблицы.


Вот массив найден, который взят из docs.oracle.com:

Object[][] data = {
            {"Kathy", "Smith",
                    "Snowboarding", new Integer(5), new Boolean(false)},
            {"John", "Doe",
                    "Rowing", new Integer(3), new Boolean(true)},
            {"Sue", "Black",
                    "Knitting", new Integer(2), new Boolean(false)},
            {"Jane", "White",
                    "Speed reading", new Integer(20), new Boolean(true)},
            {"Joe", "Brown",
                    "Pool", new Integer(10), new Boolean(false)}
    };

Все обернутые переменные получали это сообщение:

"Ненужный бокс" new Integer (5) ' Отчеты "бокс", например. обертывание примитивных значений в объекты. Бокс не нужен в Java 5 и новее, и его можно безопасно удалить. Этот осмотр сообщает только, если проект или модуль настроен на использование языкового уровня 5.0 или выше. "


Я знаю концепцию бокса и распаковки в Java, мой вопрос будет состоять в том, почему это "нерелевантно" в новой версии Java, как я видел, многие разработчики обсуждают ее или используют ее в последнее время.

Кроме того, поскольку бокс не требуется, что нужно заменить новым Integer (5) на?

Ответы

Ответ 1

Благодаря автобоксированию в Java 5 и новее вам не нужно вызывать конструкторы Integer и Boolean, чтобы вручную "вставить" примитивные значения. Кажется, что IDE рекомендует вам написать код как:

Object[][] data = {
            {"Kathy", "Smith", "Snowboarding", 5, false},
            {"John", "Doe", "Rowing", 3, true},
            {"Sue", "Black", "Knitting", 2, false},
            {"Jane", "White", "Speed reading", 20, true},
            {"Joe", "Brown", "Pool", 10, false}
    };