Создать класс какПроверка типа разбита на совпадение с верхней границей?
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;
}
}
и компилирует в Java 8! (Как в Eclipse, 4.5 и JDK1.8_25) https://ideone.com/Q9JLHP
В Eclipse, все оценки выводятся правильно, но как захват outer
«s Supplier<? super Integer>
когда-либо были удовлетворены аргументом Supplier<String>
??
Редактировать: уточнено, что это Java 8-specific и делает пример менее запутанным.
@ bayou.io Это просто произвольный общий тип, который я выбрал для примера. Я уверен, что компилятор здесь специально не относится. Я обновлю этот пример, чтобы избежать этой путаницы. –