16 Wrapper-Klassen

Einige Funktionalitäten stehen in Java nur Objekten, nicht aber primitiven Werten offen. So können beispielsweise in eine ArrayList nur Objekte, jedoch keine primitiven Werte aufgenommen werden.

Um diese Einschränkung zu umgehen, kann ein primitiver Wert mit Hilfe einer Wrapper1-Klasse als Objekt „verpackt“ werden.

Beispiel

Der Quellcode einer Wrapper-Klasse, die einen int-Wert kapselt, könnte folgendermaßen aussehen:

JAVA
public class Integer {
    
    private int value;
    
    public Integer(int value) {
        this.value = value;
    }

    public int intValue() {
        return value;
    }

    //weitere Methoden...
}
Abb. 16-1: Quellcode einer Wrapper-Klasse zur Kapselung eines int-Werts.

Java stellt für jeden primitiven Datentyp eine entsprechende Wrapper-Klasse zu Verfügung.

Die Wrapper-Klasse Integer kapselt int-Werte. Außerdem stellt sie Methoden bereit, mit deren Hilfe ein String, der ausschließlich aus Ziffern besteht, in einen entsprechenden int-Wert konvertiert werden kann und umgekehrt aus einem int-Wert ein entsprechender String erzeugt werden kann.


img/Abb_16_2_UML_Integer.svg
java.lang.Integer
public Integer(int value)
Das neu erzeugte Integer-Objekt kapselt den int-Wert value.
public int intValue()
Liefert den in dem Integer-Objekt gekapselten int-Wert.
public static int parseInt(String s)
Konvertiert den String s in eine Zahl vom Typ int und gibt diesen zurück. Enthält s Zeichen, die nicht als Teil einer Zahl interpretiert werden können (z. B. Buchstaben), führt dies zu einem Fehler.
public static String toString(int i)
Konvertiert den int-Wert i in einen String und gibt diesen zurück.
Abb. 16-2: Die Wrapper-Klasse Integer kapselt int-Werte.
Beispiel
Quellcode-Ausschnitt
JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ArrayList<Integer> listeGanzzahlen = new ArrayList<Integer>();
Integer integer;
int ganzzahl;
String text;

listeGanzzahlen.add( new Integer(10) );

integer = listeGanzzahlen.get(0);
ganzzahl = integer.intValue();

text = "12";
ganzzahl = Integer.parseInt(text);

text = Integer.toString(ganzzahl);

Abb. 16-3: Verwendung eines Wrapper-Objekts vom Typ Integer
Erläuterungen
Zeile 6 Ein neues Integer-Objekt wird erzeugt, um den int-Wert 10 zu kapseln. Anschließend wird das Objekt der listeGanzzahlen hinzugefügt.
Zeile 8 Ein Verweis auf das erste Integer-Objekt der listeGanzzahlen wird der Variablen integer zugewiesen.
Zeile 9 Der im Objekt integer gekapselte int-Wert wird abgefragt und der Variablen ganzzahl zugewiesen.
Zeile 12 Der String text besteht ausschließlich aus Ziffern. Diese werden ausgelesen und in einen entsprechenden int-Wert konvertiert. Dieser wird dann der Variablen ganzzahl zugewiesen.
Zeile 14 Der in der Variablen ganzzahl gespeicherte int-Wert wird in einen String konvertiert und der Variablen text zugewiesen.

Auch für die primitiven Datentypen double und char hält Java entsprechende Wrapper-Klassen bereit.


img/Abb_16_3a_UML_Double.svg img/Abb_16_4b_UML_Character.svg
Abb. 16-4: Die Wrapper-Klassen Double und Character kapseln entsprechende primitive Werte.