Проблема с Generics

182
20 января 2018, 00:35

Есть такой метод в классе Num

public Comparable maximumElement(List list){
    return Collections.max(list);
}

В другом классе во время обращения к нему таким способом

new Num<>(Collections.emptyList()).maximumElement(Arrays.asList(new Person(), new Person()));

я получаю

Exception in thread "main" java.lang.ClassCastException: Test$1Person cannot be cast to java.lang.Comparable

Подскажите, как сделать так, чтобы метод maximumElement() мог принимать такие параметры.

Answer 1

Дело в том, что метод Collections.max(...) принимает в качестве аргумента коллекцию, элементы которой реализуют интерфейс Comparable, что логично - чтобы получить максимальный элемент, нужно уметь сравнивать эти элементы.

Для этого исправьте класс Person, добавив реализацию интерфейса Comparable и метода с сигнатурой public int compareTo(Person o).

READ ALSO
Как поменять версию java в Maven compiler?

Как поменять версию java в Maven compiler?

Как поменять версию java в Maven compiler? Не для конкретного проекта в POM файле, а в настройках Maven? У меня прописаны переменные "JAVA_HOME" и "MAVEN_HOME"Текущая...

201
Обновить ViewModel / RecyclerViewAdapter LifeCycle

Обновить ViewModel / RecyclerViewAdapter LifeCycle

При инициализации viewModel использую кастомный Factory с передачей в конструктор аргумента

156
Servlet Exception без web.xml

Servlet Exception без web.xml

Есть свой ExeptionServlet, который отлавливает эксепшины и выводит необходимую мне информацию

178