Autoboxing ist die automatische Umwandlung primitiver Typen (int, double usw.) in die entsprechenden Wrapper-Objekte (Integer, Double usw.). Unboxing ist die Rückumwandlung des Wrapper-Objekts zurück in den primitiven Typ.
Es funktioniert automatisiert bei Zuweisungen, Methodenargumenten und in Sammlungen:
List<Integer> numbers = new ArrayList<>(); numbers.add(5); // Beispiel für Autoboxing: 5 (int) -> Integer(5) int value = numbers.get(0); // Unboxing: Integer(5) -> 5
Risiken:
Kann der folgende Code eine Ausnahme auslösen? Warum?
Integer x = null; int y = x;
Antwort: Der Code wirft NullPointerException, weil beim Versuch, int y = x; auszuführen, ein Unboxing von null in den primitiven Typ stattfindet, und null kann nicht in int umgewandelt werden.
Geschichte
int zu verwenden.Geschichte
Integer als Schlüssel für den Cache, ohne zu berücksichtigen, dass die Werte -128...127 zwischengespeichert werden, während andere dies nicht tun. Dadurch begann == plötzlich falsche Ergebnisse zu liefern, was zu falschen Löschungen von Daten im Cache führte.Geschichte
In der REST-API kamen nullable Werte an. Einfaches Unboxing des empfangenen Integers führte manchmal aufgrund eines unerwarteten null anstelle einer Zahl vom Client zum Absturz.