我有一种方法,正在如下调用executor.sumbit(),
List<Stock> stockList ;
executor.submit( ()-> {
stockList = stockService.getAllStocks();
});
我正面临“在封闭范围内定义的局部变量stockList必须是最终的或实际上是最终的”编译器错误。我尝试在Google的帮助下解决问题,但没有运气:-(
感谢任何帮助或建议,谢谢!
答案 0 :(得分:1)
由于库存服务返回列表,所以为什么不执行以下操作:
List<Stock> stockList = new ArrayList<>();
executor.submit( ()-> {
List<Stock> temp = stockService.getAllStocks());
stockList.addAll(temp);
//now that it's copied, submit to the executor.
return temp;
});
由于stockList是引用,因此您无需更改引用,而只需更改stockList引用的内容。因此,您不会违反有效的最终要求。注意:由于执行程序服务会立即返回,因此填充列表之前可能会有一段时间。