Java Reference
In-Depth Information
Seit Java 7 muss der Typ beim new-Operator nicht wiederholt werden, falls dieser aus dem
Kontext gefolgert werden kann:
ArrayList<Integer> intArray = new ArrayList<>();
Die leeren, spitzen Klammern <> werden als Diamant-Operator bezeichnet. Wir werden in
diesem Buch den Diamant-Operator nicht benutzen, sondern der Deutlichkeit halber den
konkreten Typ immer explizit angeben.
Nachdem die ArrayList intArray nun auf die eine oder andere Art (mit oder ohne Diamant-
Operator) erzeugt wurde, muss beim Aufruf der Methode add ein Integer-Objekt als Parame-
ter angegeben werden, denn für dieses ArrayList-Objekt ist der Typparameter T jetzt auf
Integer festgelegt:
intArray.add(new Integer(3));
Analog ist der Rückgabetyp der Methode get, wenn man sie auf unser ArrayList-Objekt
anwendet, Integer. Das heißt, man kann ohne Casting den Rückgabewert einer Variablen
des Typs Integer zuweisen:
Integer i1 = intArray.get(0);
Wegen des Auto-Boxing- bzw. Auto-Unboxing-Sprachkonzepts von Java kann statt Integer
auch der primitive Datentyp int verwendet werden:
intArray.add(3);
int i2 = intArray.get(0);
Der Java-Compiler macht im Fall des Auto-Boxings (1. Zeile oben) aus der primitiven 3 ein
Integer-Objekt, das den Wert 3 enthält. Ebenso fügt der Compiler in der 2. Zeile oben den
Aufruf einer Methode (intValue) ein, die aus dem von get zurückgelieferten Integer-Objekt
den primitiven Wert des Typs int extrahiert (Auto-Unboxing). Das heißt, der Compiler
ändert die beiden obigen Zeilen in diese:
intArray.add(new Integer(3));
int i2 = intArray.get(0).intValue();
Objekte eines anderen Typs als Integer können in intArray nicht gespeichert werden. Theo-
retisch wären noch Objekte vorstellbar, deren Klasse aus Integer abgeleitet ist. Da aber die
Klasse Integer fi nal ist, kann aus Integer keine Klasse abgeleitet werden. Es geht also nur
Integer und die folgenden Zeilen führen beide zu einem Syntaxfehler:
intArray.add("hallo"); //Syntaxfehler
intArray.add(new Object());//Syntaxfehler
 
Search WWH ::




Custom Search