Jak używać zmiennej nieostatniej w Java 8 lambda. Zgłasza błąd kompilacji mówiąc 'lokalna data zmiennej zdefiniowanej w zakresie otaczającego musi być ostateczna lub skutecznie końcowejJak używać zmiennych nierefinalnych w Javie 8 Lambdas
I rzeczywiście chcemy osiągnąć następujące
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);
}
Jak to osiągnąć? Wywołuje błąd zwijania dla date2. Dzięki,
Nawiasem mówiąc, kłopotliwe stare klasy czasu i daty, takie jak ['java.util.Date'] (https://docs.oracle.com/javase/9/docs/api/java/util/Date. html) są teraz starsze (https://pl.wikipedia.org/wiki/Legacy_system), wypierane przez [java.time] (https://docs.oracle.com/javase/9/docs/api/ java/time/package-summary.html) klasy wbudowane w Java 8 i 9. Zobacz [Tutorial by Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). Możesz być zainteresowany klasami "Okres" i "Czas trwania". –