Java: Object und Wrapper
Willemers Informatik-Ecke
Klassenattribute (static) Java Generics

Object als Basis aller Klassen

Ein Objekt jeder Klasse kann der Referenzvariablen einer Basisklasse zugewiesen werden. Dieser Mechanismus wird nicht nur bei der Polymorphie verwendet, sondern auch, wenn es darum geht, Datencontainer für verschiedene Datentypen anzulegen, wie beispielsweise Listen.

Um solche Container zu bauen, stellt Java die Klasse Object zur Verfügung, die, ohne es explizit deklarieren zu müssen, die Basisklasse aller Klassen darstellt. Auf diese Weise sind die folgenden Zuweisungen ohne explizites Casting möglich. Dabei ist es völlig unerheblich, welcher Klasse die Referenzen dozent, kalb und lokomotive sind.

Object o1 = dozent;
Object o2 = kuh;
Object o3 = lokomotive;
Allerding ist es nicht möglich direkt o1 einfach der Referenz dozent zuzuweisen. Wäre das möglich, könnte o1 genauso leicht der Referenz kuh zugewiesen werden, was besonders dann unangenehme Folgen hat, wenn das Programm die vermeintliche Kuh melken will.

Soll also aus o1 wieder ein Dozent werden, muss der Programmierer die Verantwortung übernehmen, und ein explizites Casting durchführen.

dozent =     (Dozent)o1;
kuh =        (Rind)o2;
lokomotive = (Fahrzeug)o3;
Zur Vermeidung des Castings empfielt sich ein Blick auf die Generics.

Klassen für die primitiven Typen

Von dem Spiel sind die primitiven Datentypen wie int, double, char oder boolean allerdings zunächst einmal ausgeschlossen. Darum wurde für jeden primitiven Datentypen eine Klasse geschaffen, die den Wert der Daten aufnimmt und quasi mit einem Object-Rahmen umschließt.

Diese Wrapper-Klassen werden wie die primitiven Datentypen benannt, nur dass der erste Buchstabe groß geschrieben wird. Also ist Boolean die Wrapper-Klasse zu boolean und Char die Wrapper-Klasse zu char. Lediglich bei int hat man noch ein paar Buchstaben zusätzlich spendiert. Die Wrapper-Klasse heißt Integer.

Die Wrapper-Klasse können wie normale Klassen per new instanziiert werden. Dabei wird der Wert dem Konstruktor übergeben.

Boolean wahr = new Boolean(true);
Integer zahl = new Integer(12);

Autoboxing

Inzwischen sind die Wrapper-Klassen direkt zuweisungskompatibel zu ihren primitiven Datentypen. Java erkennt selbst, dass ein new erforderlich ist und führt es implizit aus.
Integer wertInt = 12;
int wert = wertInt;
wertInt = wert;

Statische Methoden

Wenn man schon einmal Klassen für die primitiven Datentypen hat, wäre es pure Verschwendung, wenn man dort nicht gerade noch ein paar Methoden unterbringt. Damit sie ohne Umschweife auch von primitiven Datentypen genutzt werden können, hat man sie als statisch Methoden implementiert.

So bietet die Klasse Integer die Methoden min und max an, um den kleineren beziehungsweise größeren Wert von den beiden Parametern zu ermitteln.

Die Methode parseInt erwartet als Parameter einen String, wie er vor allem von den Eingabeelementen der grafischen Oberflächen geliefert wird, und wandelt ihn in eine ganze Zahl um.

Statische Konstanten

Die Klasse Integer liefert darüber hinaus auch Konstanten, die angeben, wie groß der maximal mögliche int-Wert sein darf.
int maxInt = Integer.MAX_VALUE;
int minInt = Integer.MIN_VALUE;

Video


Klassenattribute (static) Java Generics