я попытался реализовать общий max(a, b)
метод Object
с, которые реализуют Comparable
следующим образом:Почему это разрешает тип интерфейса?
public static <T extends Comparable<T>> T max(T o1, T o2) {
return o1.compareTo(o2) >= 0 ? o1 : o2;
}
Он работает, например, String
, но java.time.LocalDate
, параметр типа решает ChronoLocalDate
, и я не могу понять, почему:
LocalDate date1 = ..., date2 = ...;
LocalDate ld = CompareUtils.max(date1, date2); // compile error here
ошибка является «Несоответствие типов: невозможно преобразовать из ChronoLocalDate в LocalDate». Как я могу это исправить?
Можете ли вы показать нам значения '' date1' и date2'? –
любое значение, отличное от нуля – Oliv