après recherché pendant un certain temps je ne pouvais pas encore trouver une réponse à ma question, même il y a quelques Generics sujet connexe, donc ici vous allez:supérieur générique lié à Java Generics
ArrayList<? super IOException> list = new ArrayList<Exception>();
list.add(new FileNotFoundException("this is ok."));
list.add(new IOException("This is ok"));
list.add(new ClassCastException("compile err"));//why compile err?
list.add(new Exception("compile err"));//why compile err?
Pourquoi deux dernière ligne ne compile pas? Surtout la dernière ligne. J'ai fait pas mal de test sur ce sujet mais je n'arrivais toujours pas à comprendre la logique.
Merci.
@Kai cela aide à répondre à votre question clairement. – asgs
Merci, Tom aussi, voici ce que je ne comprends pas: pourquoi celui-ci compile ------ >>> list.add (nouvelle FileNotFoundException ("this is ok.")); <<< ---- Je pense que FileNotFoundException est également sous la limite de IOException. mais il compile bien. –
Après un moment de digest, finalement eu l'idée :) même après line1, list = new ArrayList(), mais les types de classe de base des éléments de la liste sont toujours restreints dans les classes satisfaites de la condition "? Super IOException", in un autre mot, la classe de base de l'élément doit être au moins (ou sous-classe de) IOException. –