Wildcard
-
huhu ihrs,
ich hab gerade angefangen mich mit Generics zu beschäftigen und hab mir grad die wildcards angeschaut...In meinem Skript steht u.a. folgendes:
<? extends Object>
bezeichnet die Menge aller Typen, die vom Typ Object abgeleitet sind,
und es entspricht <?>Wenn dem so ist verstehe ich nicht warum folgendes Beispiel nicht funktioniert:
Error:
The method push(capture#2-of ? extends Object) in the type Stack<capture#2-of ? extends Object> is not applicable for the arguments (Integer)import java.util.Stack; public class Test { public static void main(String [] args) { Stack<? extends Object> f; f = new Stack<Integer>(); f.push(new Integer(1) ); } }
Danke schonmal für Antworten
-
der typ ist: ? extends Object, daraus folgt, dass ? ein unbekannter untertyp von Object ist
wissen wir also ob ?(unbekannter typ) ein supertyp von integer ist?
-
golden_jubilee schrieb:
der typ ist: ? extends Object, daraus folgt, dass ? ein unbekannter untertyp von Object ist
wissen wir also ob ?(unbekannter typ) ein supertyp von integer ist?joa wissen wir weil jede Klasse "Object" als Superklasse hat.
-
golden_jubilee schrieb:
wissen wir also ob ?(unbekannter typ) ein supertyp von integer ist?
? ist eine "speziellere sicht" von object
genau so ist Intger eine "spezieller sicht" von object
dh aber noch lange nicht das ? eine "speziellere sicht" von Integer ist ...
? könnte zb auch String oder List oder was auch immer sein ...
-
Wenn du deine Variable deklarierst musst du schon <Integer> schreiben das ? extends Object nimmst du wenn du eigene generische Klassen oder Methoden anlegst
-
Dweb schrieb:
golden_jubilee schrieb:
der typ ist: ? extends Object, daraus folgt, dass ? ein unbekannter untertyp von Object ist
wissen wir also ob ?(unbekannter typ) ein supertyp von integer ist?joa wissen wir weil jede Klasse "Object" als Superklasse hat.
nein
Das Fragezeichen in der Angabe steht für alle Boxen und für alle Untertypen T im Fall von Box<T>. Es ist wichtig zu verstehen, dass ? nicht für Object steht, sondern für einen unbekannten Typ!
-
ok danke euch