Die folgenden Aussagen:Warum kann ich nicht I <? erweitert Typ> auf <Type>?
URLClassLoader ucl = (URLClassLoader) ClassLoader.getSystemClassLoader();
Class<URLClassLoader> uclc = ucl.getClass();
mit Fehler fehlschlagen:
Type mismatch: cannot convert from Class<capture#2-of ? extends URLClassLoader> to Class<URLClassLoader>
Warum brauche ich eine Besetzung, hier?
Ich habe mehrere Beiträge gefunden, die erklären, warum Sie nicht das Gegenteil tun können (T zu a zuordnen), aber das ist (irgendwie) offensichtlich und verständlich.
HINWEIS: Ich kodiere dies unter Sonnenfinsternis Luna, also weiß ich nicht, ob es eine Luna Quirk ist oder ob ich etwas wirklich nicht verstehe in Generika.
Können Sie warum 'Klasse extends T>' eloborate (oder 'Klasse >') ist kein Subtyp von 'Klasse'? Ich denke, es ist. –
skiwi
@swiki: Versuchen Sie, in Bezug auf Sammlungen zu denken. Denkst du List extends Zahl> sollte der Liste zuweisbar sein? Dies führt zu Sicherheitsproblemen und ist nicht erlaubt. Die umgekehrte Zuordnung ist jedoch erlaubt. –
Lesen Sie diese fantastische Erklärung: http://www.angelikananger.com/GenericsFAQ/FAQSections/TechnicalDetails.html#FAQ503 –