Inspection de boxe inutile rapscope par IDE

Inspection de boxe inutile rapscope par IDE

Je vérifiais récemment un code qui avait été publié sur les didacticiels Oracle concernant Swing # JTable. IntelIJ a renvoyé quelques messages d’avertissement concernant la mise en boîte de variables primitives dans le tableau multidimensionnel contenant les données de la table.


Voici le tableau trouvé qui provient 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)} }; 

Toutes les variables emballées recevaient ce message:

“Inutile boxing inutile (5)” Rapports “boxing”, par exemple en encapsulant des valeurs primitives dans les objects. La boxe est inutile sous Java 5 et plus récent et peut être supprimée en toute sécurité. Cette inspection indique uniquement si le projet ou le module est configuré pour utiliser un niveau de langue de 5.0 ou supérieur. ”


Je connais le concept de la boxe et du déballage en Java. Ma question serait de savoir pourquoi elle est «non pertinente» dans les nouvelles versions de Java, car j’ai vu beaucoup de développeurs en parler ou l’utiliser récemment.

De plus, puisque la boxe n’est pas obligatoire, par quoi devrait-on remplacer “nouveau Integer (5)”?

Grâce à l’autoboxing dans Java 5 et versions ultérieures, vous n’avez pas besoin d’appeler les constructeurs Integer et Boolean pour “insérer” manuellement les valeurs primitives. L’IDE semble vous recommander d’écrire le code comme suit:

 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} };