Java 如何在匿名类中正确设置字段并在主类中使用它们?

Java 如何在匿名类中正确设置字段并在主类中使用它们?,java,android-studio,android-volley,field,anonymous-class,Java,Android Studio,Android Volley,Field,Anonymous Class,我正在Android Studio中制作应用程序,无法在匿名类中设置字段值 我知道“receivedNumber”总是与“-1”不同,值“isExist”必须为“true”,但在日志中为“false”。 int字段也会发生同样的情况-始终返回“0”。 我应该如何在匿名类中正确设置字段并在我的主类中使用它们 private void isNumberExist() { String URL = "some url..."; final boolean[] isExi

我正在Android Studio中制作应用程序,无法在匿名类中设置字段值

我知道“receivedNumber”总是与“-1”不同,值“isExist”必须为“true”,但在日志中为“false”。 int字段也会发生同样的情况-始终返回“0”。 我应该如何在匿名类中正确设置字段并在我的主类中使用它们

private void isNumberExist()
{
        String URL = "some url...";
        final boolean[] isExist = new boolean[1];
        objectRequest = new JsonObjectRequest(
                Request.Method.GET,
                URL,
                null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            int receivedNumber = response.getInt("id");
                            if (receivedNumber == -1) {                           
                                isExist[0] = false;                          
                            } else {     
                                isExist[0] = true;              
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                       //error
                    }
                }
        );
        Log.e("isExist","value"+ isExist[0]);
        requestQueue.add(objectRequest);
        requestQueue.cancelAll(this);
}
private void是numberexist()
{
String URL=“某些URL…”;
最终布尔值[]isExist=新布尔值[1];
objectRequest=新的JsonObjectRequest(
Request.Method.GET,
网址,
无效的
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
int receivedNumber=response.getInt(“id”);
如果(receivedNumber==-1){
isExist[0]=false;
}否则{
isExist[0]=真;
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//错误
}
}
);
Log.e(“isExist”,“value”+isExist[0]);
添加(objectRequest);
requestQueue.cancelAll(此);
}

它将始终为
false
,因为在执行http(s)请求之前,您正在记录
isExist[0]

请试试这个

private void是numberexist()
{
String URL=“某些URL…”;
最终布尔值[]isExist=新布尔值[1];
objectRequest=新的JsonObjectRequest(
Request.Method.GET,
网址,
无效的
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
int receivedNumber=response.getInt(“id”);
如果(receivedNumber==-1){
isExist[0]=false;
}否则{
isExist[0]=真;
}
}捕获(JSONException e){
e、 printStackTrace();
}
//新日志位置
Log.e(“isExist”,“value”+isExist[0]);
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//错误
}
}
);
添加(objectRequest);
requestQueue.cancelAll(此);
}
Log.e(“isExist”、“value”+isExist[0])
可能是在调用
onResponse
之前执行的。@Justin我将Log.e()放在方法的末尾,结果是一样的。