1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
706
706
EMPFEHLEN
-
Hallo!
Gegeben sind zwei Listen:
Code java:1 2 3 4 5 6 7 8
List<Number> list14 = null; List<? super Integer> list15 = null; //list14 = list15; // Compilerfehler incompatible types //Zeile 3 list15 = list14; // Zeile 4, OK // <? super Integer> bedeutet: <Integer> und alle Super-Klassen von <Integer>
Kann mir jemand erklären, warum die Zuweisung in Zeile 4 in Ordnung ist?
Im konkreten Fall könnte da eine Typ-Zuweisung "<Integer> = <Number>" sein,
was, denke ich, nicht passt.
Kann man es so deuten, dass der Compiler großzügig bzw. wohlwollend entscheidet,
weil bei Zuweisung "<? super Integer> = <Number>" könnte auch
Typ-Zuweisung "<Number> = <Number>" sein oder auch
Typ-Zuweisung "<Object> = <Number>"
sein, was ja passt.
Viele Grüße
Steve222
-
Number ist super klasse von Integer! Warum sollte das also nicht funktionieren?
http://download.oracle.com/javase/1.5.0/docs/api/ Integer findest du unter Java.lang
und da steht Integer extends Number
-
Hallo wakoz,
Deine Zuweisung "list14 = list15;" geht nicht weil das die Verträge brechen würde die man an die generischen Typen spezifiziert hat. Du sagst list15 soll eine Liste sein in der Elemente sind die beliebigen Typs, jedoch Superklasse von Integer sein soll.
An diese darfst du nun verschiedene Listen zuweisen wie eine Liste vom Typ Object (#4) oder Number(#5). An eine Number Liste darf aber nur eine Number Liste zugewiesen werden.
Vielleicht hilft dir das weiter.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
List<Number> numberList = null; List<? super Integer> superList = null; List<Object> objectList = null; List<? super Number> superNumberList = null; objectList = numberList; // compiler fehler #1 //List<Object> = List<Number> nicht erlaubt //auch wenn in einer object list durchaus Number //instanzen auftauchen dürfen numberList = superList; // compiler fehler #2 //List<Number> = List<? super Integer> //an eine Number Liste dürfen nur Number Listen //zugewiesen werden, die superList könnte aber //eine objectList sein numberList = objectList; // compiler fehler #3 //siehe oben superList = objectList; // erlaubt #4 //List<? super Integer> = List<Object> //Object ist super typ von Integer superList = numberList; // erlaubt #5 //List<? super Integer> = List<Number> //genau wie Number superNumberList = superList; // compiler fehler #6 //superList könnte auch Integer haben //Integer ist aber kein super typ von Number superList = superNumberList; // erlaubt #7
greez isaias
-
*gg* nicht meine zuweisung
und dan war die farge: Warum geht list15 = list14; also wie bei dir #5 superList = numberList;
list15 ist zwar von beliebigen Typ aber Rückgabe ist Supertyp Integer, als return type geht nur Number oder Objekt. Die super typen von Integer halt.
list14 ist vom typ Number, welches Teilmenge von Integer ist. Außerdem ist die Zuweisung von Konkreter Liste zu Allgemeiner liste. 15 ist eine Allgemeine liste die alles aufnehmen, aber nur Number und Object zurückgeben kann.
PS: dieser Thread existiert zwei mal http://www.tutorials.de/algorithmen-...r-integer.htmlGeändert von wakoz (19.02.11 um 22:20 Uhr) Grund: Edit
-
Huch gleich doppelt vertan...
falsche Antwort & falscher Adressat
Eigentlich wollte ich deine Aussage untermauern, irgendwie hab ich dabie den Fokus verloren...
my bad
Ähnliche Themen
-
Generics Syntax
Von Lastlord im Forum JavaAntworten: 5Letzter Beitrag: 03.11.10, 08:50 -
Generics
Von bRainLaG im Forum JavaAntworten: 3Letzter Beitrag: 09.12.09, 12:42 -
Generics
Von Conkerchen im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 1Letzter Beitrag: 31.05.09, 19:18 -
Covariance für .Net Generics?
Von Thomas Darimont im Forum .NET CaféAntworten: 0Letzter Beitrag: 10.06.08, 15:44 -
Generics Problem
Von Iam_Fiction im Forum JavaAntworten: 3Letzter Beitrag: 13.01.08, 14:59





Zitieren
Login





