Wie kann ich nicht endgültige Variable in Java 8 Lambda verwenden. Es wirft Fehler Kompilation ‚Local Variable Datum definiert in einem umschließenden Rahmen sein muss endgültig oder effektiv final‘ sagenWie benutze ich nicht endgültige Variable in Java 8 Lambdas
ich eigentlich die folgende
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);
}
Wie kann ich das erreichen zu erreichen? Es wird ein Comilationsfehler für date2 ausgelöst. Danke,
Übrigens, die lästigen alten Datum-Zeit-Klassen wie ['java.util.Date'] (https://docs.oracle.com/javase/9/docs/api/java/util/Date. html) sind nun [legacy] (https://en.wikipedia.org/wiki/Legacy_system), ersetzt durch [java.time] (https://docs.oracle.com/javase/9/docs/api/ java/time/package-summary.html) Klassen, die in Java 8 & 9 integriert sind. Siehe [Tutorial von Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). Möglicherweise interessieren Sie sich für die Klassen "Zeitraum" und "Dauer". –