Java for 循环调用异步方法 只能传递最后一次循环的值,前几次循环的值获取不到
时间: 2023-07-08 13:42:57 浏览: 161
这是因为异步方法的执行是非阻塞的,当循环执行到异步方法时,程序并不会等待异步方法执行完成再继续循环,而是立即进入下一次循环。因此,如果在异步方法的回调中获取循环变量的值,只能获取到最后一次循环的值。
为了解决这个问题,可以通过将循环变量复制到一个 final 变量中的方式来解决。例如:
```
for (int i = 0; i < 10; i++) {
final int j = i;
asyncMethod(j, new Callback() {
@Override
public void onSuccess() {
System.out.println("Success: " + j);
}
@Override
public void onError() {
System.out.println("Error: " + j);
}
});
}
```
在上面的代码中,将循环变量 `i` 复制到了 final 变量 `j` 中,然后在异步方法的回调中使用 `j` 来获取循环变量的值。这样就可以正确地获取到每次循环的值了。
阅读全文