Как использовать не конечную переменную в Java 8 lambda. Он бросает ошибку компиляции говоря «Локальная дата переменной, определенной в рамках ограждающей должен быть окончательным или эффективно окончательным»Как использовать не последнюю переменную в Java 8 Lambdas
Я на самом деле хочу, чтобы достичь следующего
public Integer getTotal(Date date1, Date date2) {
if(date2 == null || a few more conditions) {
date2 = someOtherDate;
}
return someList.stream().filter(filter based on date1 and date2).map(Mapping Function).reduce(Addition);
}
Как этого добиться? Он выдает ошибку компиляции для date2. Спасибо,
Кстати, неприятные старые классы времени, такие как ['java.util.Date'] (https://docs.oracle.com/javase/9/docs/api/java/util/Date. html) теперь [legacy] (https://en.wikipedia.org/wiki/Legacy_system), вытесненный [java.time] (https://docs.oracle.com/javase/9/docs/api/ java/time/package-summary.html), встроенные в Java 8 и 9. См. [Учебное пособие по Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). Вас могут интересовать классы «Период» и «Длительность». –