Java 是否可以使用这些接口作为参数创建方法?
我不知道该如何表达我的问题,使之清晰明了。但我会尽力的对不起: 我有4个接口:Java 是否可以使用这些接口作为参数创建方法?,java,android,interface,Java,Android,Interface,我不知道该如何表达我的问题,使之清晰明了。但我会尽力的对不起: 我有4个接口: interface OnGetViewPagerListener { void onSuccessViewPager(Response<Feed> response); void onFailedViewPager(); } interface OnNextPageViewPagerListener {
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();
}
如果这令人困惑,以下是我的代码:
正如您所见,我不希望每次使用每个接口时都必须键入每个网络调用。我认为封闭类层次结构可以满足您的需要。更多信息我的看法: 这四个接口是不需要的。它们都是相同的接口:
interface BaseCallback {
void onSuccess(Response<Feed> response);
void onFail();
}
如果您坚持不同的回调
interface OnGetViewPagerListener extends BaseCallback {
}
interface OnNextPageViewPagerListener extends BaseCallback {
}
interface OnGetGridViewListener extends BaseCallback {
}
interface OnNextPageGridViewListener extends BaseCallback {
}
我认为这是不必要的除了@Sharif ElKhatib的答案,我认为这是最好的方法,另一种方法是编写重载方法,如下所示:
private makeNetworkCall( OnGetViewPagerListener ogvpl, String url){
actualNetworkCaller(); //This has the actual logic of making the network call
}
private makeNetworkCall( OnNextPageViewPagerListener onpvl, String url){
actualNetworkCaller(); //This has the actual logic of making the network call
}
// And methods for the other two interfaces
private void actualNetworkCaller(){
//Network call
}
private makeNetworkCall(接口可以使用4InterfaceShere中的任意一个,字符串url)->此签名毫无意义,接口不是数据类型,而是关键字。您可以创建一个父接口,让您的接口扩展它,然后传递它type@Stultuske这当然没有道理。如果他们知道怎么做,他们就不会问了。在“做这件事的正确语法是什么”这类问题中,没有必要指出语法的奇怪之处。@FedericoklezCulloca发布永远不会编译的代码并声明:“这就是我想做的”@Stultuske实际的问题是“在这个方法签名中,我应该放什么来代替
接口
”但是坏的wording@jhamon我在评论中也回答了这个问题。BaseCallback
可能只是一个标记接口(没有任何方法)。这样就不需要对现有接口定义进行任何更改。但是,在使用之前,需要对其进行铸造。
void makeCall(BaseCallback callback, String url) {
//do call and then callback.onSuccess
}
interface OnGetViewPagerListener extends BaseCallback {
}
interface OnNextPageViewPagerListener extends BaseCallback {
}
interface OnGetGridViewListener extends BaseCallback {
}
interface OnNextPageGridViewListener extends BaseCallback {
}
private makeNetworkCall( OnGetViewPagerListener ogvpl, String url){
actualNetworkCaller(); //This has the actual logic of making the network call
}
private makeNetworkCall( OnNextPageViewPagerListener onpvl, String url){
actualNetworkCaller(); //This has the actual logic of making the network call
}
// And methods for the other two interfaces
private void actualNetworkCaller(){
//Network call
}