【发布时间】:2020-06-04 14:52:02
【问题描述】:
我不知道如何表达我的问题以便清楚。但我会尽力道歉:
我有 4 个接口:
interface OnGetViewPagerListener {
void onSuccessViewPager(Response<Feed> response);
void onFailedViewPager();
}
interface OnNextPageViewPagerListener {
void onSuccessViewPagerNextPage(Response<Feed> response);
void onFailedViewPagerNextPage();
}
interface OnGetGridViewListener{
void onSuccessGridView(Response<Feed> response);
void onFailedGridView();
}
interface OnNextPageGridViewListener{
void onSuccessGridViewNextPage(Response<Feed> response);
void onFailedGridViewNextPage();
}
我正在将这些接口实现到我的 MainRepo 类中。在每个方法中,都包含一个网络调用:
主回购类
@Override
public void getPostsViewPager(OnGetViewPagerListener onGetViewPagerListener, String url) {
//Network Call
RetrofitInterfaces.IGetTop service = RetrofitClientInstance.getRetrofitInstance()
.create(RetrofitInterfaces.IGetTop.class);
Call<Feed> call = service.listRepos(url);
call.enqueue(new Callback<Feed>() {
@Override
public void onResponse(@NonNull Call<Feed> call, @NonNull Response<Feed> response) {
onGetViewPagerListener.onSuccessViewPager(response);
}
@Override
public void onFailure(@NonNull Call<Feed> call, @NonNull Throwable t) {
onGetViewPagerListener.onFailedViewPager();
}
});
}
是否可以使用网络调用和参数创建一个方法,以便我可以使用 4 个接口中的任何一个?
private makeNetworkCall(interface canUseAnyOfThe4InterfacesHere, String url){
//Network call
}
如果这令人困惑,这是我的代码:
如您所见,我不想每次使用每个接口时都输入每个网络调用。
【问题讨论】:
-
private makeNetworkCall(interface canUseAnyOfThe4InterfacesHere, String url) -> 这个签名没有意义,接口不是DataType,它是一个关键字。您可以创建一个父接口,让您的接口扩展它,并传递该类型
-
@Stultuske 当然这没有意义。如果他们知道该怎么做,他们就不会问了。在“执行此操作的正确语法是什么”类型的问题中,无需指出语法怪异。
-
@FedericoklezCulloca 发布永远不会编译并声明的代码也没有意义:“这就是我想做的”
-
@Stultuske 实际的问题是“我应该在这个方法签名中放什么而不是
interface”但措辞不好 -
@jhamon 我也在评论中回答了。