Java 包装回调函数
在我正在编写的Android应用程序中,大部分应用程序都涉及到对特定API执行web请求。由于数据的格式最终是相同的,所以我希望集中许多最终执行每个请求的函数,而不是每次都重写它们 例如,每次发出web请求时,我都执行相同的错误检查例程: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 { /
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) {....}
}