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