Android Studio(增量最终变量)

时间:2015-10-07 13:43:22

标签: java android netbeans android-studio

我在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);

    }

谢谢!

1 个答案:

答案 0 :(得分:2)

你可以用这个技巧做到这一点:

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值的范围处于一个完全不同的位置&amp;代码在完全不同的时间执行,甚至可能是不同的线程。从那个地方开始,i的for循环可能已经很久了。