java - lightweight - Inspección de boxeo innecesaria reportada por IDE
java ide online (2)
Inspección de boxeo innecesaria reportada por IDE
Hace poco revisé un código que se publicó en los tutoriales de Oracle sobre Swing # JTable. Hubo algunos mensajes de advertencia que fueron devueltos por IntelIJ con respecto al boxeo de variables primitivas dentro de la matriz multidimensional que contiene los datos de la Tabla.
Aquí está la matriz encontrada que se toma de 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)}
};
Todas las variables envueltas estaban recibiendo este mensaje:
"Boxeo innecesario ''nuevo Integer (5)'' Informa" boxeo ", por ejemplo, ajuste de valores primitivos en objetos. El boxeo no es necesario en Java 5 y más reciente, y se puede eliminar de forma segura. Esta inspección solo informa si el proyecto o módulo está configurado para utilizar un nivel de idioma de 5.0 o superior ".
Conozco el concepto de boxeo y unboxing en Java, mi pregunta sería por qué es "irrelevante" en la versión más reciente de Java, ya que he visto a muchos desarrolladores discutirlo o usarlo recientemente.
Además, dado que no se requiere el boxeo, ¿con qué se debe reemplazar ''nuevo Integer (5)''?
El boxeo se utiliza para almacenar valores de objetos que no son básicos, como "int". Dado que la clase "Integer" usa métodos estáticos para devolver valores encuadrados, se puede usar el siguiente método:
Integer.getValueOf(5)
Gracias al autoboxing en Java 5 y más reciente, no tiene que llamar a los constructores Integer y Boolean para "encasillar" manualmente los valores primitivos. El IDE parece recomendar que escribas el código como:
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}
};