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());
}
}