In diesem Beitrag stellen wir das automatische Ein- und Auspacken (Autoboxing und Autounboxing) von primitiven Datentypen aus Wrapper-Klassen vor.
Eine Wrapper-Klasse kapselt die jeweilige primitive Variable in einem sehr einfachen Objekt. Dabei stellt die Wrapper-Klasse einige Methoden für den Zugriff auf die primitive Variable und nützliche Funktionen zur Verfügung. Wer mehr über Wrapper-Klassen erfahren möchte, kann dies in unserer Einführung in Wrapper-Klassen tun.
Der Mechanismus des Autoboxing und Autounboxing wurde in Java 5 eingeführt. Mit Autoboxing und Autounboxing wird das Verfahren bezeichnet, mit dessen Hilfe automatisch zwischen primitiven Datentypen und Wrapper-Objekten konvertiert wird.
In der Praxis sieht das dann so aus: Einer Methode, die als Argument einen primitiven Datentypen erwartet, kann auch der entsprechende Wrapper-Datentyp übergeben werden.
Erwartet die Methode bspw. einen float-Wert, kann ihr auch ein Float-Objekt übergeben werden. Der übergebene Wert wird automatisch konvertiert, falls dies erforderlich ist.
In dem folgenden Java-Quellcode wird das Autoboxing und Autounboxing am Beispiel des float-Datentyps und der Float-Klasse vorgestellt:
Beispielanwendung: Autoboxing und Autounboxing in Java
/* * Beispielanwendung: Autoboxing und Autounboxing in Java */ public class BoxingTest { public static void floatMethode (float zahl) { System.out.println(zahl); } public static void main (String[] args) { float wert1 = 10.99F; float wert2 = new Float (20.88F); Float wert3 = new Float (30.77F); Float wert4 = 40.66F; floatMethode(wert1); floatMethode(wert2); floatMethode(wert3); floatMethode(wert4); } }
In Zeile 15 wird der float-Wert 10.99 in die float-Variable wert1
gespeichert. Da sowohl der angegebene Wert als auch die Variable vom primitiven Datentyp float sind, muss nicht automatisch konvertiert werden.
In Zeile 16 wird der Variablen wert2
, die vom primitiven Datentyp float ist, ein Float-Objekt mit dem inneren Wert 20.88 zugewiesen. Da es sich hier um zwei nicht kompatible Datentypen handelt, muss eine Konvertierung erfolgen. Dies geschieht automatisch. Der innere Wert des Float-Objekts wird automatisch „ausgepackt“ (Autounboxing) und anschließend der Variable wert2
zugewiesen.
In Zeile 18 wird der innere Wert des Float-Objekts 30.77 in die Float-Objektvariable wert3
gespeichert. Da sowohl der angegebene Wert als auch die Variable vom Objektdatentyp Float sind, muss nicht automatisch konvertiert werden.
In Zeile 19 wird der Objektvariablen wert4
, die vom Wrapper-Datentyp Float ist, der primitive float-Wert 40.66 zugewiesen. Da es sich hier um zwei nicht kompatible Datentypen handelt, muss eine Konvertierung erfolgen. Der primitive float-Wert wird automatisch „eingepackt“ (Autoboxing) und anschließend der Objektvariable wert4
zugewiesen.
Starten wir nun die Beispielanwendung. In der unteren Abbildung ist die Kommandozeilenausgabe des Programms dargestellt:
Der folgende Link führt zurück zu unserem Übersichtsbeitrag über Variablen, Datentypen und Typumwandlung (type casting) in Java.
Zurück zum Java-Kurs.
Comments 1
Pingback: Variablen, Datentypen und Typumwandlung (type casting) in Java