Java 包装回调函数

Java 包装回调函数,java,android,callback,android-volley,Java,Android,Callback,Android Volley,在我正在编写的Android应用程序中,大部分应用程序都涉及到对特定API执行web请求。由于数据的格式最终是相同的,所以我希望集中许多最终执行每个请求的函数,而不是每次都重写它们 例如,每次发出web请求时,我都执行相同的错误检查例程: JSONObject jo = new JSONObject(response); boolean success = jo.getBoolean("success"); if(success) { //Do work } else { /

在我正在编写的Android应用程序中,大部分应用程序都涉及到对特定API执行web请求。由于数据的格式最终是相同的,所以我希望集中许多最终执行每个请求的函数,而不是每次都重写它们

例如,每次发出web请求时,我都执行相同的错误检查例程:

JSONObject jo = new JSONObject(response);
boolean success = jo.getBoolean("success");
if(success) {
     //Do work
} else {
     //Display error
}

我的想法是让这个类实现
Response.Listener
,但我无法确定处理错误等的有效方法。我的问题是,有没有一种简单的方法可以在回调中执行重复的函数?我正在寻找一个优雅的解决方案,不一定是最简单的。

您可以通过向您的方法传递一个或两个接口来实现这一点,这很麻烦。Java8为您带来了lambda,这使得使用回调更加优雅。要在Android中使用Lambda,您可以使用Retro Lambda:

您的泛型方法可能如下所示

parseResponse(String response,
              Consumer<JSONObject> successConsumer, 
              Consumer<String> errorConsumer) {
   JSONObject jo = new JSONObject(response);
   boolean success = jo.getBoolean("success");
   if(success) {
     successConsumer.accept(jo);
   } else {
     errorConsumer.accept("error");
   }
}
class MyClass {
    void onResponse(String response) {
        ....
        parseResponse(response, this::handleData, this::handleError);
    }

    void handleData(JSONObject object) {....}
    void handleError(String object) {....}

}