Java Generics with Comparable

Подскажите пожалйуста почему в методе compare компилятор не дает использовать знак сравнения > и нет возможности использовать compare o в return statement? Если убрать параметр Е из generic<>, то появляется метод compareTO.

class Info <T,E extends Comparable<T>> implements Comparable<Info<T,E>>{

private T name;
private E number;

public Info(T name, E number) {
    this.name = name;
    this.number = number;
}
public T getName() {
    return name;
}
public void setName(T name) {
    this.name = name;
}
public E getNumber() {
    return number;
}
public void setNumber(E number) {
    this.number = number;
}
@Override
public int compareTo(Info<T,E> o) {
    return getName()>(o.getName())?1:-1;
}
}

Ответы (1 шт):

Автор решения: Дмитрий Никифоров

Операторы сравнения в Java можно использовать только с примитивными типами (== и != ещё для сравнения ссылок на объекты).

У вас getName() возвращает тип T. Чтобы вызвать от него compareTo() ограничение в описании дженерика должно быть на T.

class Info <T extends Comparable<T>, E> implements Comparable<Info<T,E>> {
    public int compareTo(Info<T,E> o) {
        return name.compareTo(o.getName());
    }
}
→ Ссылка