Was ist autoboxing?

Unter autoboxing bzw. unboxing versteht man das automatische Umwandeln von simplen Datentypen wie int oder float in die entsprechenden Wrapperobjekte, in diesem Fall Integer und Float, und zurück.

Inhaltsverzeichnis

Autoboxing

Ein einfaches Beispiel für autoboxing:

int x = 1;
Integer i = x;

Doch warum ist es überhaupt notwendig Integer zu verwenden, wenn int auch funktioniert? Ein Grund sind generische Klassen wie List oder Map. Diese können nicht mit simplen Datentypen sondern nur mit einem objektorientierten Typ, also einer Klasse, erstellt werden:

List<int> liste =new ArrayList<int>();  // compiliert nicht

Der Versuch eine Liste mit einem simplen Datentyp zu erstellen wird schon beim Kompilieren fehlschlagen. Hier ist also der objektorientierte Typ notwendig:

List<Integer> liste =new ArrayList<Integer>();
int i = 1;
liste.add(i); // funktioniert dank autoboxing

Autoboxing wird also angewendet, wenn ein simpler Wert an eine Methode übergeben wird, die den objektorientierten Typ erwartet, oder wenn ein simpler Wert einer Variable vom objektorientierten Typ zugewiesen wird.

Unboxing

Unboxing ist genau das Gegenteil von autoboxing: das Umwandeln vom Objekt einer Klasse in den simplen Datentyp.

List<Integer> liste = new ArrayList<>();
liste.add(1);     //autoboxing
liste.add(2);     //autoboxing
liste.add(3);     //autoboxing
for(int i:liste){ // unboxing Integer -> int
    System.out.println(i);
}

Unboxing wird angewendet, wenn ein Objekt an eine Methode übergeben wird, die den simplen Typ erwartet, oder wenn ein Objekt einer Variable vom simplen Typ zugewiesen wird.


Ähnliche Artikel