java问题,请大神指教?!

ExecutorServiceexecutor=Executors.newSingleThreadExecutor();List<String>list=newArray... ExecutorService executor = Executors.newSingleThreadExecutor();
List<String> list = new ArrayList<String>();
list.add("111");
list.add("222");
list.add("333");
for(int i=0;i<list.size();i++){
int index=i;
executor.execute(new Runnable() {
@Override
public void run() {
try {
delete(list.get(index));
} catch (KMException e) {
e.printStackTrace();
}
}
});
}

遍历时为啥不能直接用 list.get(i) 索引,而要int index=i,list.get(index) 呢,求大神指教?
展开
 我来答
yugi111
2017-12-29 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
因为这个new什么的是闭包隐式声明的方法、在里面调用外部变量的时候、外部的变量需要final修饰、但是这个该死的i是变化的、故而不能使用final、于是矛盾产生、故而使用中间变量index使之为final即可你应该加final,应该是你自己删掉了、想考考我们。。。太无聊了。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式