Sinn hinter Generic?

Status
Nicht offen für weitere Antworten.
L

LasagneLegga

Gast
Hallo,
Ich hätte mal eine Frage zum Thema Generic, genauer gesagt:
Wo liegt der Sinn dahinter? :)

Bei C++ kann ich es ja noch verstehen, dort erbt nicht jede Klasse (bzw. nicht "alles"* ist eine Klasse), sodass man nicht so einfach eine Untermenge aller Typen hat.
Aber bei Java erbt alles* von Object, dazu kommt das am Ende die generischen Typen (also nach dem compilieren) afaik eh nach Object gewandelt wird, was auch der Grund ist warum man es per Hand wieder zurückkonvertieren muss (oder irre ich mich?).
Hier verstehe ich auch warum C# Generic hat, dort läuft das afaik zur RunTime ab und man sparrt sich das manuelle Konvertieren.
Wenn ich In der generischen Klasse bestimmte Methoden benutzen will die der Typ zu implementieren hat, dann nehm ich halt nicht einfach Object sondern erstelle mir ein passendes Interface.

Also warum Generic (also konkret: Arbeiten mit einem Parameter T), anstatt direkt mit Object / dem passendem Interface?

* Ich weiß das in Java die primitiven Datentypen keine Objekte sind, aber es gibt ja die entsprechendenWrapper, die afaik ja auch bei Generic benutzt werden. Man siehts nur nicht dank autoboxing.
 

javimka

Top Contributor
Wenn man einen Typ T angibt, muss man den nicht mehr von Objekt nach T konvertieren, das ist dann klar, dass jedes Argument das übergeben wurde von diesem Typ T ist.
 

AmunRa

Gesperrter Benutzer
Die Generics helfen vorallem z.B bei Listen, Wenn du eine Liste hast, die nur den einen Bestimmten type der Variable aufnehmen soll, dann kann man das mit generics ganz leicht Bewerkstelligen ohne wirklich zusätzlichen Code schreiben zu müssen.

Der compiler überprüft dann zur Kompilezeit ob alle Variablen die du in die Liste steckst vm richtigen Typ sind.

Wenn du nun wieder Werte aus der Liste nehmen möchtest kannst du dir dann bei Generics das casten auf den richtigen Typ sparen, da auch das der Compiler für dich schon zur Compilezeit macht

im prinzip sind Generics nichts anderes als ein Mechanismus zur Typsicherheit
 

faetzminator

Gesperrter Benutzer
@TO: Wenn du's nicht glaubst, hier ein Beispiel:
Java:
class Foo {
    public static void main(String[] args) {
        List<Foo> l = new ArrayList<Foo>();
        l.add(new Foo());
        l.get(0).bar();
    }
    public void bar() {
        System.out.println("alles io");
    }
}
 
L

LasagneLegga

Gast
Ah ok,
typsicherheit und das doch implizit konvertiert wird, sind natürlich zwei gute Argumente für Generic. :)

Eine kurze Frage noch hinterher:
Wo liegt dann der Vorteil von Generic zur Laufzeit (wie es C# hat), gegenüber Generic zur Compilezeit?
 

gizmo

Bekanntes Mitglied
Die Konzepte sind grundlegend verschieden. Die Templates von C++ sind mächtiger, aber auch komplizierter.

Generics sind auch kompliziert, aber einfacher als Templates, sie decken aber auch nicht die Möglichkeiten von Templates ab.

Der Hauptunterschied ist, dass bei Java zur Laufzeit keine Informationen über die Typeparameter mehr verfügbar sind. Dies wird sich aber vielleicht in der Zukunft ändern.

Bei Java werden die Typeparameter beim Compilen entfernt, die Prüfung erfolgt also zur Compilezeit. Bei C++ werden die Klassen beim Compilen für den entsprechenden Typ übersetzt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Interfaces von Interfaces macht das noch Sinn? Java Basics - Anfänger-Themen 21
F Hat es noch einen Sinn, alte Versionen zu lernen Java Basics - Anfänger-Themen 45
berserkerdq2 Wo ist der SInn, dass man den Stream, den ich zum Schreiben nutze, outputstream nenne? Java Basics - Anfänger-Themen 5
H Sinn von Interfaces Java Basics - Anfänger-Themen 21
W Sinn eines Singleton ? Java Basics - Anfänger-Themen 14
R getUserProperties() macht für mich keinen Sinn Java Basics - Anfänger-Themen 8
E Sinn: final in Parameterliste verwenden Java Basics - Anfänger-Themen 2
B Sinn von Lambdas? Java Basics - Anfänger-Themen 16
5 Welchen Sinn hat ein Runnable Java Basics - Anfänger-Themen 6
P OOP Sinn von abstrakten Klassen Java Basics - Anfänger-Themen 2
M Kapselung Datenkapselung Sinn direkter Zugriff? Java Basics - Anfänger-Themen 1
B Der Sinn von Arrays Java Basics - Anfänger-Themen 2
Q Container sinn? Java Basics - Anfänger-Themen 3
S string index out of range - es ergibt keinen Sinn Java Basics - Anfänger-Themen 6
C Sinn eines Interfaces? Java Basics - Anfänger-Themen 4
J Sinn/Nutzen von Scanner Java Basics - Anfänger-Themen 23
B Sinn von Reflections Java Basics - Anfänger-Themen 10
H Vererbung Prinzip der Ersetzbarkeit-Sinn? Java Basics - Anfänger-Themen 9
F Sinn der SuppressWarnings("unused")-Annotation Java Basics - Anfänger-Themen 5
R Sinn des programmes Java Basics - Anfänger-Themen 10
W Sinn von Konstruktorsyntax und finalize Java Basics - Anfänger-Themen 14
J Worin besteht der Sinn und Anwendungsbereich von Dreidimensionalen Arrays? Java Basics - Anfänger-Themen 11
J Datentypen Was ist der Sinn vom Datentyp "char" ? Java Basics - Anfänger-Themen 11
T Sinn von finally? Java Basics - Anfänger-Themen 3
M Variablen Zinseszinsberechnung - Variable ergibt keinen Sinn Java Basics - Anfänger-Themen 15
A Klassen Sinn des Konstruktors Java Basics - Anfänger-Themen 12
P Sinn des Security Managers Java Basics - Anfänger-Themen 2
J Welchen Sinn haben abstrakte Methoden? Java Basics - Anfänger-Themen 4
D Sinn von Jar Dateien Java Basics - Anfänger-Themen 5
D Sinn von Interfaces - Wozu? Java Basics - Anfänger-Themen 9
K Sinn eigener Exceptions Java Basics - Anfänger-Themen 11
Luk10 Sinn von Instanzierung ohne Referenz Java Basics - Anfänger-Themen 7
hdi Sinn von RuntimeExceptions? Java Basics - Anfänger-Themen 90
Developer_X NullPointer Exception ohne Sinn Java Basics - Anfänger-Themen 19
M Der Java Schlüsselwort null; ?Welche Anweisung und Sinn? Java Basics - Anfänger-Themen 12
A Macht es Sinn Arraylisten mit Gettern zu übergeben? Java Basics - Anfänger-Themen 19
M Variable überwachen und Sinn eines Threads Java Basics - Anfänger-Themen 7
G Sinn vo OOP Java Basics - Anfänger-Themen 5
P Unterschied zwischen Interface und Vererbung und Sinn? Java Basics - Anfänger-Themen 5
G sinn von JList Java Basics - Anfänger-Themen 6
K Sinn von Interfaces Java Basics - Anfänger-Themen 10
M In gleicher zeile hinter ausgabe noch etwas ausgeben Java Basics - Anfänger-Themen 1
S Was für Aufgaben könnten sich hier hinter verbergen? Java Basics - Anfänger-Themen 5
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
A Konsolenausgabe: Hinter letztes Element ein "}" Java Basics - Anfänger-Themen 2
S Was bewirkt ganz genau throw hinter einem Funktionsnamen? Java Basics - Anfänger-Themen 14
A break; mit Einfluss hinter else if Block Java Basics - Anfänger-Themen 3
S HTML-Quelltext hinter HTTPS Java Basics - Anfänger-Themen 1
D Programm öffnet hinter Taskleiste Java Basics - Anfänger-Themen 1
Q Kommastellen hinter double wert entfernen Java Basics - Anfänger-Themen 5
X Klassen mit Suffix hinter @-Zeichen Java Basics - Anfänger-Themen 7
J Zeichen hinter Teilstring aus *txt lesen Java Basics - Anfänger-Themen 7
S Whois Abfrage hinter Proxy Java Basics - Anfänger-Themen 5
H Diverse Dinge: Unstabile Grafik, Druckt Grafik nicht,Tooltipp verschwindet hinter Grafik Java Basics - Anfänger-Themen 3
J Einen Wert hinter einen anderen speichern! Java Basics - Anfänger-Themen 2
D Datentypen Double 2 stellen hinter dem Komma ausgeben OHNE decimalformat Java Basics - Anfänger-Themen 2
F Zeichnung verschwindet hinter Bild Java Basics - Anfänger-Themen 2
G Vor oder hinter public static void main. ? Java Basics - Anfänger-Themen 8
T umgebungsvariable in xp setzen: hinter vorhandenen path? Java Basics - Anfänger-Themen 3
G Bild hinter TextArea Java Basics - Anfänger-Themen 2
S Technik hinter der write Methode Java Basics - Anfänger-Themen 5
G was steckt hinter jsp? Java Basics - Anfänger-Themen 9
K AWT: Punkt (0,0) hinter Titelzeile oder 'getTitelzeilenhöhe' Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
L Datentypen Deklarierte Felder einer Generic Klasse bestimmen Java Basics - Anfänger-Themen 7
O Comparable Generic Java Basics - Anfänger-Themen 24
F Type safety: A generic array of.. Fehler Java Basics - Anfänger-Themen 3
Yjuq Generic Methode - Wie muss die List Definition aussehen? Java Basics - Anfänger-Themen 3
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
C Generic im Konstruktor Java Basics - Anfänger-Themen 1
O Generic - Verstädnisproblem Java Basics - Anfänger-Themen 5
G instanceof in Generic Java Basics - Anfänger-Themen 7
N Datentypen LocalDate Generic Comparable Java Basics - Anfänger-Themen 2
P Variablen generic type variablen in object array Java Basics - Anfänger-Themen 1
M Generic Prüfungsvorbereitung Java Basics - Anfänger-Themen 4
G Generic und Listen Java Basics - Anfänger-Themen 8
J Generic - Autoboxing Java Basics - Anfänger-Themen 18
N Generic clonen => eclipse empfiehlt @SuppressWarnings("unchecked") Java Basics - Anfänger-Themen 2
S Generic Java Basics - Anfänger-Themen 9
P Java Generic Wildcard Java Basics - Anfänger-Themen 2
G Namen der Generic Klasse Java Basics - Anfänger-Themen 3
D generic extendet class Java Basics - Anfänger-Themen 10
M Generic's und Vererbung Java Basics - Anfänger-Themen 6
B Generic? Enum - So lösbar? Java Basics - Anfänger-Themen 8
capgeti Datentypen Static generic return value von Subclass? Java Basics - Anfänger-Themen 9
C Generic Tutorial Java Basics - Anfänger-Themen 12
T Generic vom Generic: Zu sehr verschachtelt? Java Basics - Anfänger-Themen 6
V libssrckdtree-j Generic k-d tree Java library - weiss nicht wo des hin soll Java Basics - Anfänger-Themen 2
0 Was bedeutet dieser Generic-code? Java Basics - Anfänger-Themen 3
A Generic Problem Java Basics - Anfänger-Themen 16
S Generic Methode: syntax klemmt Java Basics - Anfänger-Themen 10
S Generic: Verständnisfrage Java Basics - Anfänger-Themen 2
S generic programmierung "ne:w T[X]" Java Basics - Anfänger-Themen 2
G generic interface problem Java Basics - Anfänger-Themen 12
Safado generic array creation Java Basics - Anfänger-Themen 2
G Frage zur Generic java ? Java Basics - Anfänger-Themen 9
G eine Frage zur Generic Java ? Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben