У меня есть задача, нужно сделать фильтры для стримов с разными типами объектов.
Была идея сделать что-то типо такого:
private static <T> Predicate<? super CategoryStatisticsDto> byDateTo(Date dateTo) {
return t -> t.getPurchaseDate() != null && dateTo.after(t.getPurchaseDate());
}
private static <T> Predicate<? super Basket> byDateTo(Date dateTo) {
return t -> t.getPurchaseDate() != null && dateTo.after(t.getPurchaseDate());
}
то есть делать фильтр а предикат бы выбирался исходя из того какой тип объекта в стриме
stream = stream.filter((Predicate<? super T>) byDateTo(searchParams.getDateTo()));
но что-то пошло не так, а точнее фильтры имеют одинаковую сигнатуру и следовательно не могут быть скомпилированы :)
method <T>byDateTo(Date) is already defined in class SearchUtil
where T is a type-variable:
T extends Object declared in method <T>byDateTo(Date)
Хотя для одного типа объектов всё компилируется и классно работает
У вас проблема в том, что после стирания типов у вас остается 2 метода, с одинаковыми названиями: byDateTo
, а в java, как известно, нельзя создавать 2 метода с одинаковыми именами. Соответственно, чтобы решить, нужно либо называть методы по разному, либо создать метод обертку, который в зависимости от типа данных в stream
будет выбирать нужный вам предикат
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь сделать тест, имитация работы 2х пользователей над док-мИспользую библиотеки RestAssured и JerseyTest
Подскажите, пожалуйста, как правильно написать взаимодействие между двумя контроллерами
Я столкнулся с тем, что не понимаю, как обычно реализуется фронт для Java-приложенияУ меня есть несколько предположений о том, как это может...