Créer une classe commeLa vérification de type est-elle interrompue lors de la capture correspondante avec limite supérieure?
public class Play {
public static void main(String[] args) throws Exception {
outer(Integer.class, inner("abc"));
}
static <C> void outer(Class<C> c, List<? super C> s){
}
static <C> List<C> inner(C c) {
return null;
}
}
et compile en Java 8! (Dans Eclipse 4.5 et JDK1.8_25) https://ideone.com/Q9JLHP
Dans Eclipse, toutes les bornes sont correctement inféré, mais comment outer
est capture Supplier<? super Integer>
jamais été satisfaite par l'argument Supplier<String>
?? Editer: clarifié c'est spécifique à Java 8 et a rendu l'exemple moins confus.
@ bayou.io C'est juste un type générique arbitraire que j'ai choisi pour l'exemple. Je suis sûr que le compilateur ne le traite pas spécialement ici. Je vais mettre à jour l'exemple pour éviter cette confusion. –