问个问题,现在用Java8的lambda表达式,然后表达式中使用了一个外面传入的ArrayList,然后这个ArrayList需要是final,这是lambda的规定,就导致上面处理了ArrayList之后要给另外一个变量。谁有什么方法避免这种写法。感觉这么写很蠢。
问个问题,现在用Java8的lambda表达式,然后表达式中使用了一个外面传入的ArrayList,然后这个ArrayList需要是final,这是lambda的规定,就导致上面处理了ArrayList之后要给另外一个变量。谁有什么方法避免这种写法。感觉这么写很蠢。
可以通过以下的方式避免 safForecastActPredictHis
多次赋值:
List<SafForecastActPredictHis> safForecastActPredictHis = lastPredicIncomeVersion
.map(str -> new ArrayList<SafForecastActPredictHis>())
.orElse(new ArrayList<>());
4 回答1.7k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
4 回答2.3k 阅读
2 回答841 阅读✓ 已解决
1 回答1.8k 阅读
lambda表达式最早在java8中引入,有不完善的地方是正常的,lambda表达式用到的外边的变量必须是不可变的,这是函数式编程的一个原则,但实际上js等并不遵循这个原则,所以在js里会很方便,但在java8比较遵守这个原则,当然会麻烦点。