Wir würden nicht erwarten, dass
data.add( 44 );
funktioniert, da es so aussieht, als würde es primitive Daten direkt in die Liste der Objektreferenzen einfügen.
Trotzdem ist die Anweisung korrekt. Der Java Compiler erwartet eine Objektreferenz. Wenn er also
data.add( 44 );
sieht, muss er eine Objektreferenz für add()
bereitstellen und führt automatisch Folgendes aus:
data.add( new Integer(44) );
Diese Funktion wird als Autoboxing bezeichnet. Sie gibt es seit Java 5.0.
Unboxing funktioniert in umgekehrter Richtung. Ein int
innerhalb eines Wrapper-Objekts wird automatisch extrahiert, wenn ein Ausdruck einen int
erfordert. Der folgende Ausdruck
int sum = 24 + data.get(1) ;
extrahiert das int
in Zelle 1 von data
und addiert ihn zum primitiven int
24.
Funktioniert das Folgende?
Double value = 2.5; double sum = value + 5.7;