Почему в обобщённом методе не работает компаратор?
Само задание:
Определен enum CompareResult {LESS, EQUAL, GREATER};
Создайте статический метод с именем compare, который содержит 2 параметра обобщающего типа, и сравнивает их через метод compareTo(). Метод compare должен возвращать CompareResult, причем
CompareResult.LESS если первый параметр меньше второго
CompareResult.GREATER если первый параметр больше второго
CompareResult.EQUAL если первый параметр равен второму
Мой код:
public static <T> CompareResult compare(T one, T two) {
int s = one.compareTo(two);//эта стока кода не работает
if (s > 0) return CompareResult.GREATER;
if (s < 0) return CompareResult.LESS;
return CompareResult.EQUAL;
}
Ответы (1 шт):
Автор решения: Roman C
→ Ссылка
Надо, чтобы объекты были Comparable, чтобы можно было вызывать метод compareTo().
public static <T extends Comparable<T>> CompareResult compare(T one, T two) {
int s = one.compareTo(two);
if (s > 0) return CompareResult.GREATER;
if (s < 0) return CompareResult.LESS;
return CompareResult.EQUAL;
}