Autoboxing is de automatische conversie van primitieve types (int, double enz.) naar de bijbehorende wrapper-objecten (Integer, Double enz.). Unboxing is de omgekeerde conversie van een wrapper-object terug naar een primitief.
Het werkt automatisch bij toewijzingen, methode-argumenten en collecties:
List<Integer> numbers = new ArrayList<>(); numbers.add(5); // Voorbeeld van autoboxing: 5 (int) -> Integer(5) int value = numbers.get(0); // Unboxing: Integer(5) -> 5
Risico's:
Kan de volgende code een uitzondering genereren? Waarom?
Integer x = null; int y = x;
Antwoord: De code genereert NullPointerException omdat bij het uitvoeren van int y = x; unboxing van null naar primitief gebeurt, en null kan niet worden omgezet naar int.
Verhaal
int.Verhaal
Integer als sleutel voor de cache, zonder in aanmerking te nemen dat de waarden -128...127 worden gecached, terwijl andere dat niet doen. Daardoor begon == plotseling onjuiste resultaten te geven, wat leidde tot onterechte verwijdering van gegevens uit de cache.Verhaal
In de REST API kwamen nullable waarden binnen. Eenvoudige unboxing van de binnenkomende Integer leidde soms tot crashes vanwege onverwachte null in plaats van een nummer van de client.