java - 从匿名内部类中返回包含在其中的方法的数据
问题描述
我有一个方法可以进行需要匿名内部类的 API 调用。在匿名内部类中,有一个onResponse
方法,它有一个void
返回类型,我可以在其中访问 JSON。我希望该方法返回 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
}
然后在其他类中,你有一个回调作为你的“返回”
apiInstance.makeAPIRequest(new Response.Listener<JSONObject>(){
@Override
public void onResponse(JSONObject response){
// do stuff
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error){
...
}
});
推荐阅读
- python - 导入 flask.ext 引发 ModuleNotFoundError
- image - 文档:使用包含指令(rst,sphinx)时缺少图像
- django - 使用嵌入标签从文件 DJANGO 加载 PDF 失败
- python - 在 groupby 之后将子组合并到相邻的子组中
- python - 在屏幕会话中使用 Python 时出现致命的 IO 错误
- laravel - Laravel:未找到除索引以外的所有页面
- sql - 无法解决 SQL Server 2014 中 SELECT 语句中第 3 列的排序规则冲突
- xamarin.forms - 当应用程序在后台建立连接时,是否可以发布数据?
- css - 如何制作具有粘性第一列的角材料表
- javascript - Webpack 错误:请手动安装 sqlite3 包