Die <> Syntax

Status
Nicht offen für weitere Antworten.

deleted

Bekanntes Mitglied
Eine Frage hierzu:
enn ich einen Vector habe, und den z.B. mit <String>meinVector typensicher mache, dann fügt doch der Compiler während er compiliert automatisch die entsprechenden Castanweisungen hinzu oder?

Jetzt will ich aber selbst z.B. einen Stack schreiben, der sowas unterstützt.
Wie geht denn das?
 

HaBaLeS

Aktives Mitglied
R.B. hat gesagt.:
Eine Frage hierzu:
enn ich einen Vector habe, und den z.B. mit <String>meinVector typensicher mache, dann fügt doch der Compiler während er compiliert automatisch die entsprechenden Castanweisungen hinzu oder?

Das Stimmt so nicht. Wenn du einen Vector so instanzierst wird das Ganze Objekt so Instanziert , das es NUR mit Strings arbeiten kann. Diese Konstrukte nennen sich Generics und sind seit Java 1.5 vorhanden (in C++ gibt es Template die was ähnliches machen). Sinn und Zweck ist, das du wie der Name schon sagt Generische Klassen schreiben kannst, die verschiedene Objekttypen benutzen können. Wenn du mehr dazu wissen willst halte nach Genrics ausschau.

http://www.java-forum.org/de/viewtopic.php?t=50691&highlight=generics Sachaut nach nem ganz guten Anfang aus
 
G

Guest

Gast
R.B. hat gesagt.:
Jetzt will ich aber selbst z.B. einen Stack schreiben, der sowas unterstützt.
Wie geht denn das?
Code:
public class Stack<E>
{
    // ...
}
Dann kannst Du in der Implementation von Stack den Typ E benutzen.
 
G

Guest

Gast
Schau dir auch den Code von java.util.List, java.util.AbstractList etc. an.
 

Hilefoks

Bekanntes Mitglied
HaBaLeS hat gesagt.:
[Das Stimmt so nicht. Wenn du einen Vector so instanzierst wird das Ganze Objekt so Instanziert , das es NUR mit Strings arbeiten kann.
Falsch! Versuch einfach folgendes:
Code:
void nichtGenerisch(List l) {
    l.add(new Object());
}
//...
List<String> list=new LinkedList<String>();
list.add("Foo");
nichtGenerisch(list);
//...

Das funktioniert weil die Java-Generics als Type Erasur implementiert sind. Beim kompilieren gehen daher alle Typinformationen verloren und der Compiler fügt automatisch entsprechende Casts ein. C# macht es z.B. genauso - abgesehen von primitiven Datentypen. Allerdings wird es in C++ anders gemacht - dort wird vom Compiler für jeden möglichen Typ eigener Code erzeugt - so wie in C# für die primitiven Datentypen.

In Java wurde dieser Weg gewählt weil er neben anderen Vorteilen vor allem kompatibel zu altem, nicht generischen, Code ist.

MfG,
Hilefoks
 
G

Guest

Gast
Noch eine Anmerkung. In C# stehen die Informationen über die verwendeten Typen in einer generischen Klasse,
im Gegensatz zu Java, auch zur Laufzeit zur Verfügung.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Tommy135 Syntax Highlighting Allgemeine Java-Themen 3
Elyt Compiler-Fehler Datei kann nicht erstellt werden. Die Syntax für den Dateinamen etc. ist falsch. Allgemeine Java-Themen 2
W JavaCC to create my only syntax Allgemeine Java-Themen 5
B Syntax-Erkennungs Problem Allgemeine Java-Themen 2
H Syntax ProcessBuilder Allgemeine Java-Themen 7
B Syntax-Highlighting abspeichern Allgemeine Java-Themen 7
T Parseerror bei richtiger Syntax Allgemeine Java-Themen 5
M Syntax Highlighter für MS Word? Allgemeine Java-Themen 2
H Pattern.compile Syntax Allgemeine Java-Themen 15
S Mail Adressen Syntax prüfen Allgemeine Java-Themen 22
C Syntax printf Allgemeine Java-Themen 5
S Eine Collection von Objekten mit LDAP Syntax filtern Allgemeine Java-Themen 5
P JTextPane mit Java (eclipse) Syntax Highlighting Allgemeine Java-Themen 4
D Kompakte Syntax für Funktionen Allgemeine Java-Themen 7
G Syntax für den Dateinamen Allgemeine Java-Themen 1
R Syntax Error, der keiner sein sollte Allgemeine Java-Themen 12
G Java Syntax Allgemeine Java-Themen 7
T Syntax Error Allgemeine Java-Themen 9
F Plugin damit M$ Word Java syntax versteht? Allgemeine Java-Themen 12
W Syntax - Frage Allgemeine Java-Themen 6
padde479 jEdit Syntax Highlighting Allgemeine Java-Themen 3
G Syntax-Fehler beim aufrufen von generischen Klassenmethoden Allgemeine Java-Themen 4
V syntax problem Allgemeine Java-Themen 6
S Syntax Error, insert "AssignmentOperator Expression&amp Allgemeine Java-Themen 3
F log4j XML-Syntax Allgemeine Java-Themen 4
B Syntax error on token ,VariableDeclaratorId expected after. Allgemeine Java-Themen 3
G Syntax Übersicht Suche Allgemeine Java-Themen 7
A gültige syntax einer ip-adresse? Allgemeine Java-Themen 2
S java syntax zusammenfassung Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben