Was ist Autoboxing ?
Unter Autoboxing versteht man in Java die automatische Umwandlung eines primitiven Datentyps in ein Objekt der entsprechenden Wrapper-Klasse. Diese Umwandlung wird vom Compiler automatisch vorgenommen, wenn ein Objekt erwartet wird, aber ein primitiver Wert übergeben wird.
Java unterscheidet grundsätzlich zwischen primitiven Datentypen wie int, double oder boolean und Objekten. Viele Klassen aus der Java-Bibliothek, zum Beispiel die Klasse ArrayList, können jedoch nur Objekte speichern. Primitive Werte müssen daher normalerweise zuerst in Objekte umgewandelt werden.
Zu jedem primitiven Datentyp gibt es eine passende Wrapper-Klasse, beispielsweise Integer für int, Double für double und so weiter. Vor Java 5 musste die Umwandlung
primitiver Datentyp → Objekt einer Wrapperklasse
immer ausdrücklich im Quelltext erfolgen, beispielsweise so:
ArrayListzahlen = new ArrayList<>(); int a = 12; zahlen.add(Integer.valueOf(a));
Hier wird der primitive int-Wert a zunächst mit Integer.valueOf() in ein Objekt der Klasse Integer umgewandelt. Erst dieses Objekt kann dann in das ArrayList-Objekt zahlen eingefügt werden.
Automatische Umwandlung seit Java 5
Seit Java 5 übernimmt der Compiler diese Umwandlung automatisch. Man kann daher einfach schreiben:
ArrayListzahlen = new ArrayList<>(); int a = 12; zahlen.add(a); // Autoboxing
Der Compiler behandelt diese Anweisung intern so, als hätte man geschrieben:
zahlen.add(Integer.valueOf(a));
Diese automatische Umwandlung eines primitiven Wertes in ein Wrapper-Objekt nennt man Autoboxing.
Autoboxing funktioniert aber nicht nur mit int, sondern mit allen primitiven Datentypen, wie das folgende Beispiel zeigt:
ArrayListmesswerte = new ArrayList<>(); double temperatur = 21.5; messwerte.add(temperatur);
Autoboxing macht Programme kürzer und besser lesbar, weil die explizite Umwandlung mit Methoden wie Integer.valueOf() oder Double.valueOf() meist nicht mehr notwendig ist.