Java 是否可以使用这些接口作为参数创建方法?

Java 是否可以使用这些接口作为参数创建方法?,java,android,interface,Java,Android,Interface,我不知道该如何表达我的问题,使之清晰明了。但我会尽力的对不起: 我有4个接口: interface OnGetViewPagerListener { void onSuccessViewPager(Response<Feed> response); void onFailedViewPager(); } interface OnNextPageViewPagerListener {

我不知道该如何表达我的问题,使之清晰明了。但我会尽力的对不起:

我有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();
        }
如果这令人困惑,以下是我的代码:


正如您所见,我不希望每次使用每个接口时都必须键入每个网络调用。

我认为封闭类层次结构可以满足您的需要。更多信息

我的看法:

这四个接口是不需要的。它们都是相同的接口:

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
}