Creare una classe comeControllo tipo interrotto sull'acquisizione corrispondente con limite superiore?
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;
}
}
e compila in Java 8! (Sia in Eclipse 4.5 e JDK1.8_25) https://ideone.com/Q9JLHP
In Eclipse, tutti i limiti sono desunti correttamente, ma come potrebbe catturare Supplier<? super Integer>
outer
's state mai soddisfatti con l'argomento Supplier<String>
??
Modifica: chiarito questo è specifico di Java 8 e ha reso l'esempio meno confuso.
@ bayou.io È solo un tipo generico arbitrario che ho scelto per l'esempio. Sono sicuro che il compilatore non lo tratta in modo speciale qui. Aggiornerò l'esempio per evitare questa confusione. –