Ребят, почему ошибка? Что ему не нравится?
import org.belsut.estryn.lessons.task02.details.Detail;
import java.util.*;
public class Sorter {
private List<Detail> details = new ArrayList<>();
public Sorter(List<Detail> details) {
this.details = details;
}
private int getMinTime() {
int min = Collections.min(details);
return min;
}
}
Возникает ошибка компиляции:
min(java.util.Collection<? extends T>) in Collections cannot be applied to (java.util.List<import org.belsut.estryn.lessons.task02.details.Detail>)
reason: no instance(s) of type variable(s) T exists to that Detail conform to Comparable
Collections.min принимает коллекцию объектов, которые реализуют Comparable:
<T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
Ошибка говорит о том, что класс Detail не реализует интерфейс Comparable<Detail> и, соответственно, метод не знает как сравнивать объекты и определять минимум.
Об этом написано в сообщении об ошибке:
reason: no instance(s) of type variable(s) T exists to that Detail conform to Comparable<? super T>
Кроме того, нужно заметить, что min вернет Вам объект типа Detail, а не int который Вы ожидаете получить.
Пути решения проблемы:
Comparable<Detail> в классе Detail.min, которая принимает компаратор. Так Вы сможете сортировать по заданному полю, например.Stream.min или сначала Stream.mapToInt затем IntStream.min. Посмотрите пример №3 здесь: Finding Max/Min of a List or Collection.P.S. Сообщение об ошибке мне пришлось перепечатать. Эти полминуты жизни мне никто не вернет. Поэтому сообщения об ошибке нужно целиком копировать и вставлять в вопрос с виде текста.
Продвижение своими сайтами как стратегия роста и независимости