le seguenti dichiarazioni:Perché non è possibile assegnare I <? estende Tipo> a <Type>?
URLClassLoader ucl = (URLClassLoader) ClassLoader.getSystemClassLoader();
Class<URLClassLoader> uclc = ucl.getClass();
con errore:
Type mismatch: cannot convert from Class<capture#2-of ? extends URLClassLoader> to Class<URLClassLoader>
Perchè ho bisogno di un cast, qui?
Ho trovato diversi post che spiegano il motivo per cui non è possibile fare il contrario (assegnare T a a), ma questo è (tipo) ovvio e comprensibile.
NOTA: Sto codificando questo sotto Eclipse Luna, quindi non so se si tratta di un Luna Quirk o se c'è qualcosa che non capisco davvero nei farmaci generici.
Potete eloborate perché 'Classe extends T>' (o '' Classe >) non è un sottotipo di classe ''? Io penso che sia. –
skiwi
@swiki: cerca di pensare in termini di collezioni. Pensi List estende Numero> dovrebbe essere assegnabile alla Lista? Ciò porterà a problemi di sicurezza del tipo e non è consentito. L'incarico opposto è permesso però. –
Leggi questa fantastica spiegazione: http://www.angelikalanger.com/GenericsFAQ/FAQSections/TechnicalDetails.html#FAQ503 –