Второй аргумент Class<? extends A>
..., который должен расширять класс, которым является первый аргумент (например, аргумент один является Question
, поэтому второй аргумент должен быть чем-то, что расширяет Question
.
Разбивка:
NastyThingsToClasses(Object.class, Question.class, SomeQuestion.class); // OK
Все расширяется Object
, поэтому второй аргумент верен.
NastyThingsToClasses(Question.class, SomeQuestion.class); // OK
SomeQuestion
расширяет Question
, так что это честная игра.
NastyThingsToClasses(Question.class, Object.class, SomeQuestion.class);
Object
не расширяет Question
, следовательно, ошибка.
надеюсь, что все прояснилось.
-Brett