ProgrammatieBackend ontwikkelaar

Leg uit hoe de mechanismen van autoboxing en unboxing in Java werken, wat de risico's zijn en waar ze kunnen leiden tot prestatie- of logische fouten.

Slaag voor sollicitatiegesprekken met de Hintsage AI-assistent

Antwoord.

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:

  • Mogelijkheid van NullPointerException bij unboxing van null;
  • Inefficiënt geheugen- en tijdsgebruik door constante creatie van wrapper-objecten;
  • Moeilijkheden met == (referentievergelijking) en equals.

Vraag met een val.

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.

Voorbeelden van echte fouten door onbekendheid met de nuances van het onderwerp.


Verhaal

Het berekenen van sommen in een collectie van Integer-wrappers. Elke keer dat de som toenam, werd er een nieuw Integer-object aangemaakt, wat leidde tot aanzienlijke vertragingen op de echte server in plaats van gebruik te maken van int.

Verhaal

De programmeur gebruikte 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.