Java8 lambda ArrayList final

问个问题,现在用Java8的lambda表达式,然后表达式中使用了一个外面传入的ArrayList,然后这个ArrayList需要是final,这是lambda的规定,就导致上面处理了ArrayList之后要给另外一个变量。谁有什么方法避免这种写法。感觉这么写很蠢。
图片描述

回答:

lambda表达式最早在java8中引入,有不完善的地方是正常的,lambda表达式用到的外边的变量必须是不可变的,这是函数式编程的一个原则,但实际上js等并不遵循这个原则,所以在js里会很方便,但在java8比较遵守这个原则,当然会麻烦点。

回答:

可以通过以下的方式避免 safForecastActPredictHis 多次赋值:

List<SafForecastActPredictHis> safForecastActPredictHis = lastPredicIncomeVersion

.map(str -> new ArrayList<SafForecastActPredictHis>())

.orElse(new ArrayList<>());

以上是 Java8 lambda ArrayList final 的全部内容, 来源链接: utcz.com/p/174181.html

回到顶部