Сначала объясните ваше текущее определение:
public class Association<K, V extends Comparable<? super V>>
Это означает, что вы определяете открытый класс с именем Association
Этот класс имеет 2 параметра типа: K
и V
.Из них V
имеет дополнительное ограничение, которое должно быть сопоставимо с ? super V
(= V
или супертипом V
).
Поскольку вы хотите не сравнивать по ключу, ондолжно быть K
, то есть Comparable
.Кроме того, вы хотите сравнить сами Association
, так что это тоже должно быть Comparable
.
Так что измените определение вашего класса следующим образом:
public class Association<K extends Comparable<K>, V> implements Comparable<Association<K, V>>
Ваше сравнение будет тогдабыть:
public int compareTo(Association<K, V> other) {
return key.compareTo(other.key);
}