Poniższe stwierdzenia:Dlaczego nie można przypisać I <? rozszerza Type> to <Type>?
URLClassLoader ucl = (URLClassLoader) ClassLoader.getSystemClassLoader();
Class<URLClassLoader> uclc = ucl.getClass();
niepowodzeniem z błędem:
Type mismatch: cannot convert from Class<capture#2-of ? extends URLClassLoader> to Class<URLClassLoader>
Dlaczego muszę obsadę, tutaj?
Znalazłem kilka postów wyjaśniających, dlaczego nie możesz zrobić odwrotnego kroku (przypisz T do a), ale jest to (rodzaj) oczywiste i zrozumiałe.
UWAGA: koduję to pod zaćmieniem Luny, więc nie wiem, czy to jest Luna Dziwka, czy jest coś, czego naprawdę nie rozumiem w przypadku leków generycznych.
można eloborate dlaczego '' Class extends T> (lub '' Class >) nie jest podtypem '' Class? Myślę, że to jest. –
skiwi
@swiki: Spróbuj myśleć w kategoriach kolekcji. Czy myślisz, że List extends Number> powinien być przypisany do listy? Doprowadzi to do problemów z bezpieczeństwem typu i nie jest dozwolone. Odwrotne przypisanie jest jednak dozwolone. –
Przeczytaj to fantastyczne wyjaśnienie: http://www.angelikalanger.com/GenericsFAQ/FAQSections/TechnicalDetails.html#FAQ503 –