我在我的Android应用程序中使用Retrofit并且有一个Response
类来封装从API中的每个端点返回的标准响应格式。
public class Response<T> {
public List<ResultFlags> resultFlags;
public List<T> resultData;
public List<SystemFlags> systemFlags;
}
我正在尝试创建一种通用的方法来创建可用于每个API调用的Retrofit Callback
。我遇到的问题是某些端点有结果数据而有些端点没有。例如,在我的Retrofit服务类中,有一个调用,optimizeContacts
有结果数据,另一个sendInvites
没有。
@POST("/OptimizeContacts.php")
void optimizeContacts(
@Query("action") String action,
@Query("campaign") String campaign,
@Body OptimizeContactsParams params,
Callback<Response<ArrayList<OptimizedContacts>>[]> callback
);
@POST("/SendInvites.php")
void sendInvites(
@Query("action") String action,
@Query("MSISDN") String msisdn,
@Query(value="accessToken", encodeValue=false) String accessToken,
@Query("campaign") String campaign,
@Body ArrayList<ViralContact> contacts,
Callback<Response[]> callback
);
因此,当我尝试创建一个方法来为端点返回Callback
时,我无法找到支持Callback<Response<ArrayList<OptimizedContacts>>[]>
和Callback<Response[]>
类型的方法。
这是我目前的方法。
protected static <P, R extends OttoBusBase> Callback<Response<P>[]> transactionCallbackWithPayload(final Class responseClass,
final R event) {
return new Callback<Response<P>[]>() {
@Override
public void success(Response<P>[] responses, retrofit.client.Response response) {
onSuccessPayload(responseClass, event, responses, response);
}
@Override
public void failure(RetrofitError error) {
onFailure(responseClass, event, error);
}
};
}
我是否可以简单地处理Response<P>[]
和Response[]
场景?我是否需要为每种返回类型创建两种方法?或者我可以用一种方法吗?