Рассмотрим следующие фрагменты кода
public static <T> String typeName1(Class<T extends Object> c) {
return c.getSimpleName();
}
public static String typeName2(Class<? extends Object> c) {
return c.getSimpleName();
}
Первый показывает ошибку времени компиляции, а второй успешно компилируется. Почему это так?