Was bedeutet < > in Java?
-
Hallo, ich habe ein Programmm erhalten, welches in Java geschrieben sein soll:
package blatt8; import java.util.ArrayList; import java.util.List; public class LS10pod { private String name; private String adresse; private String telefon; private Ordner dateisystem = new Ordner(null, ""); private List<LS10pod> anderePods = new ArrayList<LS10pod>(); private Datei[] topTen = new Datei[10]; private List<Playliste> playlisten = new ArrayList<Playliste>(); public LS10pod(String name, String adresse, String telefon) { this.name = name; this.adresse = adresse; this.telefon = telefon; } public String getName() { return name; } public String getAdresse() { return adresse; } public String getTelefon() { return telefon; } public Datei getTopTen(int index) { return topTen[index]; } public void setTopTen(int index, Datei datei) { topTen[index] = datei; } public Ordner getDateisystem() { return dateisystem; } public int getAnzahlAndererPods() { return anderePods.size(); } public LS10pod getAnderenPod(int index) { return anderePods.get(index); } public int getAnzahlPlaylisten() { return playlisten.size(); } public Playliste getPlayliste(int index) { return playlisten.get(index); } public Playliste erzeugePlayliste(String name) { Playliste playliste = new Playliste(name); playlisten.add(playliste); return playliste; } public String toString() { return "LS10pod von " + name + ", " + adresse + ", " + telefon; } public void druckeInhalt() { } }
Jedoch verstehe ich diese Zeile nicht:
private List<LS10pod> anderePods = new ArrayList<LS10pod>();
Was bedeutet dieses < > In Java?
-
-
Hey MisterX
Willkommen an der Uni Dortmund
-
@ Klugsch...
Wenn du die Aufgabe auch machen musst, dann kannst du mir bestimmt auch erklären, warum der Compiler bei mir alle Vorkommen von <...>
als Fehler markiert?
-
Weil dein Compiler noch nicht die Versionsnummer 1.5 bzw. 5.0 hat. Lade dir das aktuelle JDK von Sun runter.
-
Wie man dir bereits geantwortet hat, werden Templates erst ab 1.5
unterstützt...Shit...
Ich hab daheim auch noch 1.4Jetzt muss ich mir wegen dem Mist 1.5 drauf machen *argh*
-
Na MisterX,
wie läufts?
Womit hast du das Sequenzdiagramm gemacht?
-
Das heißt Generics, Templates sind was anderes!
-
Ich hab die noch nie benutzt...
Dann sag mir mal bitte den Unterschied zwischen Templates und Generics...
(Abgesehen davon, dass sie es umbenannt haben)Für mich sieht das genau so aus wie die Templates in C++
-
@Klugsch...
Danke, aber ich habe herrausgefunden, dass man das auch mit 1.4 machen kann.
Entferne einfach alle <...> aus dem Quelltext, dann funktioniert der auch noch. Baue dann die benötigte Funktion (Jetzt ist es ausführbar) und mache fürs ausdrucken für die Abgabe einfach die <...> wieder rein, dass ist zwar dann bei 1.4 nicht ausführbar aber das ausdrucken geht.So kannste das blöde Installieren von 1.5 vermeiden.
-
Klugsch... schrieb:
Ich hab die noch nie benutzt...
Dann sag mir mal bitte den Unterschied zwischen Templates und Generics...
(Abgesehen davon, dass sie es umbenannt haben)Für mich sieht das genau so aus wie die Templates in C++
Genau, ich habe auch erste gedacht, die hätten sich vertan und c++ code geschrieben!
-
Generics sind die Mädchenversion von den C++ Templates, so wie Java (die Sprache) die Mädchenversion von C++ ist.
Ist ja auch kein Wunder die Generics sind ja Teil der Sprache Java und die C++ Templates der Sprache C++.
-
Mit Generics kannst du sowas machen wie foo < x super Something > oder bar < y extends x >.
Das bieten Templates zB nicht.
Dafür kannst du für Java Generics keine primitiven Datentyen verwenden, als foo < double > geht nicht. Da musst du die API Wrapper nehmen. Also foo < Double > wiederum ginge.PS: Generics sind keine Templates und Templates sind keine Generics. Sonst würde ja beide Generates heissen, kapiert?!
-
da sieht man mal was für Luschen an Unis studieren
-
Danke MisterX,
Das funktioniert immer (außer primitive Typen???(Geht das auch?)), nur manchmal mußt du dann noch casten, weil du ja ohne Generics immer nen Object
zurückkriegst...
-
@fachinf:
Ich bin auch nen FIAE...
Nur hab mich noch nicht mit 1.5 beschäftigt, da es in dem Betrieb,
in dem ich nebenbei arbeite, nicht verwendet wird...
-
Hallo,
Klugsch... schrieb:
Danke MisterX,
Das funktioniert immer (außer primitive Typen???(Geht das auch?))
Wie Griffin schon sagte, kannst/musst du die Wrapper-Klassen verwenden, also Integer usw.
Mfg
GPC
-
"Templates" und "Generics" deuten übrigens auch schon vom Namen her auf gewisse Unterschiede hin.
"Template" heißt "Schablone" und genauso sieht der C++-Compiler das auch. Er nutzt das Template als Schablone, um daraus dann durch Ersetzung der Typparameter den eigentlichen Code zu generieren. "Generics" bleiben hingegen auch im Kompilat etwas generisches. Da wird kein neuer Code generiert. Stattdessen wird der generische Code bezüglich der Typparameter auf den kleinsten gemeinsamen Nenner reduziert, so dass er mit den verschiedensten Typen nutzbar ist.
-
Danke GPC...
Das es mit Wrapper-Klassen geht ist klar..
Das Posting von Griffin hatte ich da noch nicht gelesen...
Bin auch noch am arbeiten
-
Ich grüße die Uni Dortmund, auch wenn da fast nur Är§che am Campus rumlaufen