Generics

Diskutiere Generics im Java Basics - Anfänger-Themen Bereich.
G

Gansa

Wenn der Compiler zur Kompilierungszeit alle Typparameter löscht, warum sollte man dann Generics verwenden? Wird der typ nicht erst zur Laufzeit festgelegt? Das verstehe ich nicht ganz.
Danke schon mal!
 
J

JennyL

zur Compilezeit wird die Typsicherheit festgestellt. Da sich der typ zur Laufzeit nicht ändert, kann dann Info weg.
 
L

LimDul

Generics sind im Endeffekt ein Hinweis für den Compiler. Ich kann durch Casts immer zu der Variante ohne Type-Checks zur Compile Zeit kommen (das sind die unchecked Casts-Warnings).

Die Vorteile sind:
* Ich kann eine API bauen, ohne mich auf einen konkreten Typ festzulegen (Beispiel List)
* Ich kann aber trotzdem zur Compile Zeit eine (relativ große) Typ-Sicherheit herstellen
* Ich erspare im Programm häßliche Casts.

Das heißt, zur Laufzeit sind folgende 2 Listen identisch:

Java:
List<String> stringList;
List <BigDecimal> decimalList;
{/code]

Aber zur Compile-Zeit bekomme ich einen Fehler, wenn ich in die erste Liste einen BigDecimal stecken will. Ich kann natürlich folgendes machen:

[code=JAVA]
 List<String> stringList = new ArrayList<>();
List tempList = (List)stringList;
List<BigDecimal> decimalList = (List<BigDecimal>)tempList;
decimalList.add(new BigDecimal(100));
String text = stringList.get(0);
Das kompiliert (mit unchecked Casts-Warnings), gibt aber zur Laufzeit eine ClassCastException beim get. Wenn ich aber auf solche Schweinereien verzichte und sowas versuche:
Java:
 List<String> stringList = new ArrayList<>();
stringList.add(new BigDecimal(100));
Gibt es schon einen Compilefehler.
 
J

JennyL

Man kann sich das vielleicht so vorstellen: Zuerst wird überprüft, ob die Maschine richtig funktioniert, und erst dann und nur dann wird sie in Gang gesetzt... "Die Maschine" ist hier nur ein Stellvertreter für das Programm. Es ist dabei wichtig, dass die beiden Vorgänge (Maschine wird überprüft und Maschine wird in Gang gesetzt) zeitlich getrennt voneinander ablaufen und eine logische Implikation bilden (nur wenn die Maschine richtig funktioniert, läuft sie)...
 
Thema: 

Generics

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben