【发布时间】:2016-03-30 11:31:58
【问题描述】:
如何在 Java 8 lambda 中使用非最终变量。它会引发编译错误,提示“在封闭范围中定义的局部变量日期必须是最终的或有效的最终”
我其实是想实现以下目标
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这样麻烦的旧日期时间类现在是legacy,被Java 8 和9 中内置的java.time 类所取代。参见Tutorial by Oracle。您可能对Period和Duration课程感兴趣。