我在 FINAL 变量中遇到问题。
它总是要求我将其声明为 Final,但如果我将其声明为 Final,则它无法递增。
这是我的代码:
for(int i=0;i<longLat.size();i++) {
StringRequest request = new StringRequest(Request.Method.POST, insertUrl, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
System.out.println(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> parameters = new HashMap<String, String>();
/*Im having a problem here because i need to load
more than one 'POILongLat' so i put it in arrayList
but it keeps asking me to make it final*/
parameters.put("POILongLat", longLat.get(i));
parameters.put("POIAddress", "Addresses");
return parameters;
}
};
requestQueue.add(request);
}
谢谢!
最佳答案
你可以用这个技巧做到这一点:
for(int i=0;i<longLat.size();i++) {
final int valueThisIteration = i;
....
parameters.put("POILongLat", longLat.get(valueThisIteration));
...
}
这样,每次迭代中都会有一个新的 final
变量,Java 会很高兴。
它必须是final
的原因与Android或Android Studio无关。这是因为您尝试使用 i 值的范围位于完全不同的位置,并且代码在完全不同的时间甚至可能在不同的线程中执行。从那个地方开始,您的 for 循环与 i
可能早已完成。
关于java - Android Studio(增加最终变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32993864/