почему class A> а не - class A>?
Comparable<T> интерфейс и класс должен имплементировать интерфейс.
Например Integer implements Comparable<Integer>.
Почему же говорят, что class A<T extends Comparable<T>> ?
Ответы (1 шт):
Потому что то что здесь Integer implements Comparable<Integer> вы говорите:
"Класс Integer реализует интерфейс Comparable". Это ключевое слово используется при использовании интерфейсов.
class A<T extends Comparable<T>>
В этом же куске кода говорится следующее: "Есть класс А в котором есть какой-то параметризированный тип. И этот тип обязан быть экземпляром Comparable", это ключевое слово из Generic Wildcards. И здесь не важно будет ли этот класс T имплементировать интерфейс или же наследоваться от какого-то класса, в отличии от extends и implements при обычном использовании.
Надеюсь, что смог хоть немного ответить на ваш вопрос. Я бы рекомендовал вам больше почитать про Generics в Java.