Java Frage zu Generics?

...komplette Frage anzeigen

2 Antworten

Soweit hast du das richtig verstanden: Der Generics-Ausdruck durch einen Buchstaben ersetzt eine Mögliche Klasse, welche du übergeben kannst. 

- Bei Datentypen etwas vorsichtig sein: Denn es gilt hauptsächlich für Klassen, worunter auch Integer und String fällt. Primitive Datentypen (int, char, double, etc...) sind nicht möglich.

Worin besteht der Vorteil? Wie du richtig erkannt hast, bei List kannst du ausschließlich die genannte Klasse(oder Inerface) anfügen als auch wieder erhalten ohne hier nochmal den Typen abfragen zu müssen. Sowie Klassen, die von dieser Klasse erben, oder jenes Interface Implementieren.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Anonynonymous
05.07.2016, 18:47

Vielen Dank für deine Antwort, das hat mir schon sehr geholfen.

Ich habe mir gerade noch einmal die Java Dokumentation dazu angeschaut.

(http://docs.oracle.com/javase/tutorial/java/generics/types.html)

Was mir dazu noch sehr geholfen hat, war die Aussage, dass, wenn man eine generische Version einer Klasse erstellt, alle Objektvorkommen zwar durch ein <T> ersetzen kann, das instanziierte Objekt an sich jedoch einer bestimmten Klasse/Interface zuweisen muss.

Das waren dann auch die 2 "Fälle", die ich oben unterschieden habe. Auch, wenn es wohl keine Fälle gewesen sind ;-)

Ich denke, jetzt habe ich es so langsam, richtig?

0

Ich erkläre mal am Beispiel C/C++, da ist das ganze etwas einleuchtender.

Dort heißt das ganze einfach template. Im wesentlichen ist ein template eine Schablone für zB eine Klasse oder Methode. Angenommen ich habe eine Methode "method( var)" und rufe diese in meinem C/C++ Code einmal mit einem string und einmal mit einem int als Argument auf, dann generiert der Compiler diese Methode einmal als "method(string var)" und einmal als "method(int var)". Es werden vom Compiler als Klassen/Methoden nach meiner Schablone angelegt.

In Java ist es durch die VM anderst realisiert, aber Prinzip der "Schablone" und wie is genutzt wird ist dasselbe.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von triopasi
05.07.2016, 09:03

Ich halte die Unterteilung in 2 Arten von Generics für falsch, da Datentypen auch Klassen sind, ist das 1. nur ne konkretere Anwendung vom 2.

0

Was möchtest Du wissen?