У меня есть задача, нужно сделать фильтры для стримов с разными типами объектов.
Была идея сделать что-то типо такого:
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
будет выбирать нужный вам предикат
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пытаюсь сделать тест, имитация работы 2х пользователей над док-мИспользую библиотеки RestAssured и JerseyTest
Подскажите, пожалуйста, как правильно написать взаимодействие между двумя контроллерами
Я столкнулся с тем, что не понимаю, как обычно реализуется фронт для Java-приложенияУ меня есть несколько предположений о том, как это может...