Return 来自匿名内部 class 的数据包含在方法中

Return data from inside an anonymous inner class for method it is contained in

我有一个方法可以进行 API 调用,需要匿名内部 class。在匿名内部 class 中,有一个 onResponse 方法,它有一个 void return 类型,我可以在其中访问 JSON。我想要 return JSON.

的方法
public JSONObject makeAPIRequest() {

 JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>(){

  @Override
  public void onResponse(JSONObject response){
   //have makeAPIRequest() return response
  }, 
  new Response.ErrorListener(){
   @Override
   public void onErrorResponse(VolleyError error){
    ...
   }
 });
}

简答 - 您需要重构您的方法,使其不是程序性的,并使用 return...

例如,

public void makeAPIRequest(Response.Listener<JSONObject> listener) {
   JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, listener);
   // TODO: submit request
}

然后在另一个 类 中,您有一个回调作为您的 "return"

apiInstance.makeAPIRequest(new Response.Listener<JSONObject>(){

  @Override
  public void onResponse(JSONObject response){
     // do stuff
  }, 
  new Response.ErrorListener(){
   @Override
   public void onErrorResponse(VolleyError error){
    ...
   }
 });