Programmiertechnik Wrapperklassen für skalare Typen

Werbung
Prof. Dr. Oliver Haase
Karl Martin Kern
Achim Bitzer
Programmiertechnik
Wrapperklassen für skalare Typen
Was sind Wrapper-Klassen?
●
Für jeden skalaren Typ stellt Java eine entsprechende Klasse bereit,
die einen Wert des entsprechenden Typs in ein Objekt einhüllt.
Wrapper-Objekt, z.B.
vom Typ Float
2.7182
skalarer Wert, z.B. float
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
2/9
Was sind Wrapper-Klassen?
skalarer Typ
Wrapper-Klasse
byte
Byte
short
Short
int
Integer
long
Long
float
Float
double
Double
char
Character
boolean
Boolean
Alle Wrapper-Klassen befinden sich im Paket java.lang
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
3/9
Boxing
●
Skalarer Wert → Wrapper-Objekt:
Konstruktoraufruf, z.B.
int a = 5;
Integer zahl = new Integer(a);
●
Konvertierung in diese Richtung heißt auch Boxing.
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
4/9
Boxing/Unboxing
●
Wrapper-Objekt → Skalarer Wert : Verwendung einer Instanzmethode
<xxx>Value, z.B.
Integer zahl = new Integer(5);
int a = zahl.intValue();
●
Konvertierung in diese Richtung heißt auch Unboxing.
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
5/9
Wozu Wrapper-Klassen?
●
Mit Hilfe von Wrapper-Objekten können skalare Werte dort
verwendet werden, wo Objekte verlangt sind, z.B. in Containern:
public class Paar {
private Object l, r;
public Paar(Object l, Object r) {
this.l = l;
this.r = r;
}
public Object getL() { return l; }
public Object getR() { return r; }
public String toString() {
return "(l, r) = (" + l + ", " + r + ")";
}
}
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
6/9
Wozu Wrapper-Klassen?
●
Verwendung skalarer Werte als Komponenten von Paar:
public class Boxing {
public static void main(String[] args) {
Integer a = new Integer(3);
Double b = new Double(5.0);
Paar p = new Paar(a, b);
double x = 7 + 4 * a.intValue() – b.doubleValue() / 8;
}
}
●
●
Ohne Wrapper-Objekte könnten die Werte 3 und 5.0 nicht an den
Konstruktor der Klasse Paar übergeben werden.
Aber: Wrapper-Objekte erfordern explizites Boxing und Unboxing.
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
7/9
Auto(un)boxing
●
Seit Java 5 müssen Boxing und Unboxing nicht mehr explizit
programmiert werden.
●
Der Compiler erledigt das automatisch → Autoboxing/Autounboxing.
●
Code wird übersichtlicher.
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
8/9
Auto(un)boxing
public class Boxing {
public static void main(String[] args) {
Integer a = 3;
Double b = 5.0;
Paar p = new Paar(a, b);
double x = 7 + 4 * a – b / 8;
}
}
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
9/9
Herunterladen