У меня есть класс с универсальным атрибутом.
public class MyClass<T> {
T data;
MyClassType source;
ZonedDateTime updatedTime;
}
Я пытаюсь отсортировать список вышеупомянутого класса, содержащий различные типы T, в обратном порядке
myClassList.sort(Comparator.comparing(MyClass::getUpdatedTime).reversed()); //Doesn't work
Ошибка: (372, 61) Java: несовместимые типы: невозможно определить переменные типа (типов) T, U (несоответствие аргумента; недопустимый метод ссылки на метод getUpdatedTime в классе com.quicken.subscriptionservice.dtos.UnifiedHistoryResponse не может бытьприменяется к заданным типам: обязательные аргументы не найдены: java.lang.Object причина: фактические и формальные списки аргументов различаются по длине)
Ошибка: (372, 62) java: недопустимая ссылка на метод нестатический метод getUpdatedTime () нельзя ссылаться из статического контекста
Если я удаляю ".reversed" в сортировке, это работает без проблем.
Также, если я изменю свой класс, чтобы использовать вместо него класс Objectиз общих типов, как показано ниже, это работает.
public class MyClass {
Object data;
MyClassType source;
ZonedDateTime updatedTime;
}
Теперь сортировка ниже работает
myClassList.sort(Comparator.comparing(MyClass::getUpdatedTime).reversed()); //Now works
Я был бы признателен, если кто-то может помочь мне понять, как я могу получитьобратная сортировка, чтобы работать для общего случая и помочь мне понять, почему я получаю ошибку, упомянутую выше.