Когда появляется Comparable<? extends T>
, это означает, что у вас есть экземпляр Comparable
, который можно сравнить с одним (неизвестным) подтипом T
, а не то, что его можно сравнить с любым подтипом T .
Но вам это не нужно, потому что Comparable<T>
в любом случае может сравнивать себя с любым подтипом T
, например, Comparable<Number>
может сравнивать себя с Comparable<Double>
.
Так что попробуйте:
interface A<T> extends Comparable<T> {
// ...
}
или
interface A<T extends Comparable<T>> extends Comparable<A<T>> {
// ...
}
в зависимости от того, нужно ли вам иметь возможность сравнивать экземпляры T
для реализации вашего метода compareTo
.