在我正在编写的Android应用中,大部分应用都涉及对特定API执行网络请求。由于数据的格式最终是相同的,我想集中我最终执行每个请求的许多函数,而不是每次都重写它们。
例如,每次发出Web请求时,我都会执行相同的错误检查例程:
JSONObject jo = new JSONObject(response);
boolean success = jo.getBoolean("success");
if(success) {
//Do work
} else {
//Display error
}
我的想法是让这个类实现Response.Listener
,但我无法确定处理错误等的有效方法。我的问题是是否有一种简单的方法可以在回调中执行重复的功能?我正在寻找一个优雅的解决方案,不一定是最简单的。
答案 0 :(得分:1)
您可以通过将一个或两个接口传递给方法来实现这一点,这很麻烦。 Java 8为您带来了lambda,它使得回调更加优雅。要在Android中使用lambdas,您可以使用retrolambda:https://github.com/orfjackal/retrolambda
您的通用方法可能如下所示
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) {....}
}