Generische Typen

O2016

Bekanntes Mitglied
Mir sind generische Typen nicht klar.
Manchmal schreibt man Klassenname<T> name_der_Variable bsp in einer Funktion als Übergabeparameter.
und dann wiederum gibt es Funktionen

public static <T> Name_der_Klasse<T> Name_Der_funktion()

Dann wiederrum schreibt man <HashSet<Klassenname<T>>

Was ist zwischen den dreien der Unterschied?
Das T so verstehe ich das gibt einen Typen wieder in dem ich alles einsetzen kann, Häuser, int, aber ebenso auch Strings.

... Kann das wer erklären?
 

O2016

Bekanntes Mitglied
Generics dienen dazu
- mehr Bugs zu finden während der Compilerzeit
Generics add stability to your code by making more of your bugs detectable at compile time

Warum Generics?
- um den selben Code nochmal für andere Dinge zu verwenden und nicht alles neu schreiben müssen bei verschiedenen Inputsachen
- bessere Typsicherheit( hab ich Schuhe und Autos, dann kann ich nur Schuhe oder Autos in eine Methode stecken)
- man hat keine Casts
- Code ist leichter zu lesen

Eine generische Klasse wird folgendermassen aufgebaut:
public class<T1,T2,Tn> { }
// Damit kann ich T1, T2,Tn überall in der Klasse verwenden

Die Parameter haben spezielle Namen:
E Element
K Schlüssel
N Nummer
T Typ
V Wert
(Prinzipiell kann ich aber auch ein X reinschreiben für ein Element oder? Es ist nur konform dass man es so macht?)
Versteh ich das Richtig, <T> ist ein Typparameter, <String> aber ein Typargument?


> sowie < Operationen oder auch == vergleich mit Comparable, da <,=,> nur bei primitiven Datentypen funktioniert.
 

httpdigest

Top Contributor
Versteh ich das Richtig, <T> ist ein Typparameter, <String> aber ein Typargument?
Nicht per se. Der Unterschied zwischen einem Typparameter und einem Typargument ist so ziemlich derselbe wie bei einem formalen Methodenparameter und einem aktuellen Methodenargument. Das eine dient als Platzhalter bei der Deklaration und das andere bei der tatsächlichen Instanziierung bzw. Konkretisierung einer typparametrierten Klasse oder Methode.

Wenn man das Ganze etwas weiterspinnt und in die Typtheorie abdriftet, dann sind parametrisierte Typen im Grunde genommen nichts anderes als Funktionen, die einen Typ (einen generischen Typ) auf einen neuen konkreten Typen abbilden. Genauso wie Methoden quasi Funktionen auf konkreten Werten sind, sind generische Typen und die Instanziierung/Konkretisierung dieser Typen mit Typargumenten dann halt Funktionen auf Typen.

Ein Beispiel, wo <T> sowohl ein Typparameter als auch ein Typargument ist, ist:
Java:
public class MyOwnList<T> implements List<T> {
  ...
}
Hier ist das <T> an MyOwnList ein Typparameter und das <T> an List ein Typargument.
 

O2016

Bekanntes Mitglied
Vielen Dank schon mal. Eine kurze Verständnisfrage noch
Java:
public class MyOwnList<T> implements List<T>
Sehe ich das richtig, T ist ein beliebiger Typ, Bsp: int oder schuhe
und es erwartet eine Liste vom Typ T also (int oder Schuhe?)

Java:
public class MyOwnList<Peter<T>> implements List<T>
Und das hier erwartet ein beliebigen Typ T, also auch Schuhe oder int jedoch muss es von der Klasse Peter sein.

Ist das so richtig?
 
Zuletzt bearbeitet von einem Moderator:

mihe7

Top Contributor
Sehe ich das richtig, T ist ein beliebiger Typ, Bsp: int oder schuhe
und es erwartet eine Liste vom Typ T also (int oder Schuhe?)
Es darf kein primitiver Typ sein (also gerade nicht z. B. int, boolean, etc. Die Wrapper-Klassen wie Integer, Boolean können aber natürlich verwendet werden)

Un es wird keine Liste vom Typ T erwartet, sondern MyOwnList<T> implementiert das List-Interface für Typ T.

public class MyOwnList<Peter<T>> implements List<T>
Das ist syntaktisch falsch. Was Du willst ist ein beliebiger Typ T, der identisch mit Peter oder einem Subtyp von Peter ist:
Java:
public class MyOwnList<T extends Peter> implements List<T>
 

mihe7

Top Contributor
Ich wusste nicht das Integer und int zwei unterschiedliche Sachen sind.
:eek: Die primitiven Datentypen von Java sind Schlüsselwörter der Sprache: boolean, byte, short, char, int, long, float, double. Instanzen der primitiven Datentypen sind einfache Werte (keine Objekte) und können in Java nicht unmittelbar referenziert werden. Die Wrapper-Klassen (java.lang.Integer & Co) sind die objekt-orientierten Pendants zu den primitiven Typen und erlauben die Darstellung primitiver Werte als Objekte.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Generische Typen für dynamisches Formular Java Basics - Anfänger-Themen 3
D Generische Typen Java Basics - Anfänger-Themen 20
C unterschied generische typen und supertypen als methodenparameter Java Basics - Anfänger-Themen 3
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
B instanceof Prüfung für generische Typen Java Basics - Anfänger-Themen 5
I Generische Funktion Java Basics - Anfänger-Themen 3
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
H Generische Konstruktor Java Basics - Anfänger-Themen 12
Kirby.exe Generische Objekt Instanz erstellen Java Basics - Anfänger-Themen 14
D Generische Klasse Java Basics - Anfänger-Themen 6
H linkedlist generische klassen Java Basics - Anfänger-Themen 169
M Datentypen Generische Datentypen - Syntax Java Basics - Anfänger-Themen 25
M Generische Klassen "FlaschenRegal" Java Basics - Anfänger-Themen 13
Queiser Datentypen 2 generische Datentypen für eine Schnittstelle Java Basics - Anfänger-Themen 1
M Generische Liste aus Comparable-Objekten Java Basics - Anfänger-Themen 6
J Sortierte generische Liste Java Basics - Anfänger-Themen 1
D statische generische Methoden Java Basics - Anfänger-Themen 3
S Wie muss ich die Generische Methode schreiben? Java Basics - Anfänger-Themen 6
M Methoden Generische Klasse - ändern einzelner Attributwerte Java Basics - Anfänger-Themen 2
S generische methode mit verschiedenen datentypen Java Basics - Anfänger-Themen 3
N Generische Schnittstellen Java Basics - Anfänger-Themen 2
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
S Erste Schritte Generische Klassen sind toll ....aber warum sollte ich das je benutzen? Java Basics - Anfänger-Themen 3
L Generische Liste Java Basics - Anfänger-Themen 4
B Generische Queue programmieren Java Basics - Anfänger-Themen 5
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
A Probleme mit MergeSort Generische Liste Java Basics - Anfänger-Themen 0
A Generische Methode Java Basics - Anfänger-Themen 4
H Collections List in List<SpecificType> als stat. generische Methode zurückgeben Java Basics - Anfänger-Themen 4
J Probleme mit static generische Klasse Java Basics - Anfänger-Themen 6
M Generische Liste Java Basics - Anfänger-Themen 4
B Generische Methode Java Basics - Anfänger-Themen 2
B Generische Klasse Java Basics - Anfänger-Themen 7
B Generische Methoden Java Basics - Anfänger-Themen 8
F Collections Generische Klasse/Methoden Java Basics - Anfänger-Themen 19
L Generische Warteschlange Java Basics - Anfänger-Themen 8
A Generische Datentypen Java Basics - Anfänger-Themen 8
bluerob generische ArrayList -> erbende Objekte auslesen Java Basics - Anfänger-Themen 24
L Generische Containerklasse Java Basics - Anfänger-Themen 9
V Methoden Umwandlung in generische Methode Java Basics - Anfänger-Themen 8
A Generische Collections und Vererbung Java Basics - Anfänger-Themen 2
S Generische HashMap Java Basics - Anfänger-Themen 2
M Klassen Generische Klassen, Personen und Gruppen Java Basics - Anfänger-Themen 6
L Generische ArrayList, CastProblem Java Basics - Anfänger-Themen 2
W generische Module Java Basics - Anfänger-Themen 2
S Generics und "generische Feldzuweisungen" Java Basics - Anfänger-Themen 5
D Datentypen Generische Collections und Warnings Java Basics - Anfänger-Themen 8
F Generische Methoden Problem Java Basics - Anfänger-Themen 5
E Generische Arrays durch Typecast mit Object-Array Java Basics - Anfänger-Themen 11
K Generische Klasse mit innerer Klasse | Problem mit Array Java Basics - Anfänger-Themen 6
B Was passiert, wenn eine konkrete Klasse von generische Klasse erbt? Java Basics - Anfänger-Themen 14
B Generische Vererbung was ist der Unterschied? Java Basics - Anfänger-Themen 4
W Generische Klassen Java Basics - Anfänger-Themen 3
W Generische Klassen und Casting Java Basics - Anfänger-Themen 6
J array über generische arraylist Java Basics - Anfänger-Themen 7
N 2 dimensionale generische Arrays Java Basics - Anfänger-Themen 9
H Statische generische Methode Java Basics - Anfänger-Themen 2
G Frage zum Ungang mit Generische Datentypen Java Basics - Anfänger-Themen 4
0x7F800000 generische arrays mal wieder )-; Java Basics - Anfänger-Themen 6
D generische methode <T> void . Java Basics - Anfänger-Themen 9
J Generische Methoden Java Basics - Anfänger-Themen 6
G Doppelt verkettete, generische Liste Java Basics - Anfänger-Themen 11
S Parameterübergabe: Generische Klasse Java Basics - Anfänger-Themen 4
S generische Felder Java Basics - Anfänger-Themen 2
P Generische Klasse Java Basics - Anfänger-Themen 8
C Generische Klassen, das erste Mal. Java Basics - Anfänger-Themen 8
F Generische Methode - was bringt der Wildcard Operator? Java Basics - Anfänger-Themen 7
F Generische Liste von generischen Objekten. Java Basics - Anfänger-Themen 3
H generische Methoden Java Basics - Anfänger-Themen 5
N generische HashMap und Iterator Java Basics - Anfänger-Themen 2
H generische Bausteine, heterogene Datenstrukturen Java Basics - Anfänger-Themen 2
J generische klassen neue Instanz Java Basics - Anfänger-Themen 5
H Generische Klassen. Java Basics - Anfänger-Themen 16
C Parameter in verschiedenen Anzahl und Typen Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Enum Typen, was passiert intern mit ihnen? Java Basics - Anfänger-Themen 2
L Abstrakte Typen und Schnittstellen Java Basics - Anfänger-Themen 19
BadBat Variablen Eine Variable mit 2 Typen Java Basics - Anfänger-Themen 38
P Liste sortieren verschiedener generischer Typen Java Basics - Anfänger-Themen 4
T Interface implementieren mit Abstrakten Typen? Java Basics - Anfänger-Themen 4
K Datentypen Kurzform Addition geht, Langform scheitert am Typen Java Basics - Anfänger-Themen 6
K Frage zu Referenzvariablen und deren Typen Java Basics - Anfänger-Themen 6
C Typen aus List<Object[]> ändern Java Basics - Anfänger-Themen 7
D Klassen Feste und veränderbare Typen in Hierarchien Java Basics - Anfänger-Themen 5
B Elementare Typen und Referenztypen Java Basics - Anfänger-Themen 6
S Collections Aus Set<Object> bestimmte Typen entfernen Java Basics - Anfänger-Themen 3
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
H Felder mit unterschiedl. Typen sortieren Java Basics - Anfänger-Themen 5
T genericsdeklaration - Typen einschränken Java Basics - Anfänger-Themen 17
alderwaran überladene methoden mit allen möglichen typen aufrufen Java Basics - Anfänger-Themen 3
F Datentypen Zuweisungsproblem bei parametrisierten Typen mit/ohne Wildcards Java Basics - Anfänger-Themen 3
X eigener Mergesort auf generischen Typen mit Comparator Java Basics - Anfänger-Themen 6
D Datentypen mehrdimensionales Array meherer Typen möglich ? Java Basics - Anfänger-Themen 6
R Array eines neuen Typen erstellen und befüllen Java Basics - Anfänger-Themen 2
T mit Typen Date rechnen Java Basics - Anfänger-Themen 6
G Mehrere Typen in einer Datei Java Basics - Anfänger-Themen 5
T Vergleich von generischen Typen Java Basics - Anfänger-Themen 2
M List mit typen füllen Java Basics - Anfänger-Themen 5
J Datei aus unterschiedlichen Typen auslesen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben