| » Tutorial / Java Bibliotheken / Wrapper |
|
Oft kommt man in die Situation, einen primitiven Datentyp als vollwertiges Objekt nutzen zu müssen. Dafür stellt die Java - Bibliothek für alle elementaren Typen jeweils eine Wrapper - Klasse bereit, die den Wert intern kapselt und als Objekt repräsentiert. Diese Klassen sind Gegenstand dieses Kapitels. |
|
» verfügbare Klassen » Instanziierung » Abfrage des Wertes » Parsen von Strings » Konstanten » Call by Reference |
| » verfügbare Klassen | nach oben « | ||||||||||||||||||||||
|
Java stellt für die folgenden primitiven Datentypen die entsprechenden Wrapper - Klassen zur Verfüung. Diese können elementare Werte als Objekt kapseln.
|
|||||||||||||||||||||||
| » Instanziierung | nach oben « |
|
Die Wrapper - Klassen erlauben alle die Instanziierung eines neuen Objekts entweder durch Übergabe eines entsprechenden Wertes oder eines Strings, dessen Inhalt dann automatisch in den entsprechenden Datentyp konvertiert wird. Hier eine Übersicht über die zur Verfügung stehenden Konstruktoren. Für die Klasse Character gibt es keinen Konstruktor, welcher eine Stringrepräsentation auswertet. Die Klasse Void ist garnicht vertreten, denn diese kann nicht instanziiert werden. Sie dient internen Bibliotheken lediglich als Platzhalter für den Datentyp. Das folgende Beispiel instanziiert eine Wrapper - Klasse und initialisiert sie mit einem Wert. Auch der Weg über eine Stringrepräsentation kann gegangen werden. |
|
| Quellcode | |
public class MyClass
{
public static void main(String[] args)
{
Boolean b = new Boolean(true);
Integer i = new Integer("10");
System.out.println(b);
System.out.println(i);
}
}
|
|
| Ausgabe | |
true
10
|
|
| » Abfragen des Wertes | nach oben « | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Die Wrapper - Klassen erlauben alle die Rückgabe des aktuellen Wertes passend zum verwalteten Datentyp und als String. Die folgende Liste zeigt die Methoden auf und in welchen Wrapper - Klassen sie verfügbar sind.
Die Methode für eine Stringrepräsentation des aktuellen Wertes steht für alle Klassen zur Verfügung. Die Konvertierungen in einen Zeichentyp oder booleschen Wert hingegen ist nur für die spezifischen Klassen möglich. Das folgende Beispiel instanziiert eine Wrapper - Klasse und initialisiert sie mit einem Wert. Dieser wird über zwei verschiedene Methoden ausgegeben. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Quellcode | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
public class MyClass
{
public static void main(String[] args)
{
Float f = new Float(10.0);
System.out.println(f.floatValue());
System.out.println(f.intValue());
}
}
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Ausgabe | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10.0
10
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| » Parsen von Strings | nach oben « |
|
Sechs der insgesamt neun Wrapper - Klassen stellen jeweils eine statische Methode zum Parsen eines Strings bereit. Sie erzeugen keine neuen Objekte, sondern dienen lediglich als Service. Sie parsen einen String und extrahieren den darin beschriebenen Wert. Die folgende Tabelle zeigt alle Parser - Methoden und ihre entsprechende Wrapper - Klasse. Die Methoden liefern jeweils den Wert in Form eines elementaren Datentyps. Es existiert noch eine weitere Variante, welche den Wert eines Strings in Form einer bereits instanziierten Wrapper - Klasse liefert. Hierbei handelt es sich um die valueOf - Methoden. Diese werden von den folgenden sieben Klassen bereitgestellt. Bei dieser Variante ist lediglich noch die Klasse Boolean hinzugefügt worden, die die Methode ebenfalls implementiert. Das folgende Beispiel demonstriert kurz die Nutzung beider Varianten. |
|
| Quellcode | |
public class MyClass
{
public static void main(String[] args)
{
String s1 = "1000";
String s2 = "True";
System.out.println(Float.parseFloat(s1));
System.out.println(Boolean.valueOf(s2));
}
}
|
|
| Ausgabe | |
1000.0
true
|
|
| » Konstanten | nach oben « | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Alle Wrapper - Klassen stellen diverse Konstanten zum Abruf bereit, welche unter anderem spezielle Werte oder die Bereichsgrenzen ihrer Werteklasse angeben. Welche Konstanten für welche Klassen abrufbar sind, können Sie der folgenden Tabelle entnehmen.
Die Klasse Void wurde hier nicht mit eingetragen, da sie ohnehin nicht instanziiert werden kann. Das folgende Beispiel liefert einige Werte für ein Wrapper - Objekt eines spezifischen Typs. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Quellcode | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
public class MyClass
{
public static void main(String[] args)
{
System.out.println(" Maximum : " + Double.MAX_VALUE );
System.out.println(" Minimum : " + Double.MIN_VALUE );
System.out.println(" Typ : " + Double.TYPE );
System.out.println(" keine Zahl : " + Double.NaN );
System.out.println(" + unendlich : " + Double.POSITIVE_INFINITY);
System.out.println(" - unendlich : " + Double.NEGATIVE_INFINITY);
}
}
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Ausgabe | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Maximum : 1.7976931348623157E308
Minimum : 4.9E-324
Typ : double
keine Zahl : NaN
+ unendlich : Infinity
- unendlich : -Infinity
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| » Call by Reference | nach oben « |
|
Ein in ein Wrapper - Objekt verpackter primitiver Datentyp wäre an sich nun per Objektreferenz als Parameter für Methoden denkbar, da Objekte immer per Referenz übergeben werden. Dennoch wird diese Möglichkeit dadurch unterbunden, dass alle Wrapper - Klassen unveränderlich sind. Somit lassen sich weder die eingetragenen Werte ändern, noch an den Aufrufer per Referenz zurückgeben. |
|
| « Kapitel | Kapitelübersicht | nach oben |