java - 在接口(interface)中是否有重载方法的替代方法?

标签 java android interface callback overriding

我正在为 CallBack 使用 Interface(我对这两者都很陌生)。到目前为止,我所有的 CallBacks 都是相同的元素类型,但现在我想返回不同的元素类型。

现状:

public interface CallBack {
    void CallBack(String s)
}

我认为可行的方法:

public interface CallBack {
    void CallBack(String s)
    void CallBack(Integer i)
}

这(显然对你们大多数人来说)告诉我在使用 CallBack 时我必须实现这两种方法,这不是我的预期用途。
我知道我现在可以通过将其更改为 void CallBack(Object o) 来“解决”这个问题,但我不喜欢模棱两可的类型,并想让它更可靠。

有什么方法可以让我的CallBack Override 看起来像这样:

...new CallBack() {
    @Override
    public void CallBack(String s) {
        ...

……或者……

...new CallBack() {
    @Override
    public void CallBack(Integer i) {
        ...

... 而不是必须同时实现两者,或者使用 Object 变体?

最佳答案

你可以使用如下的通用接口(interface)

public interface CallBack<T> {
    T CallBack(T s);
}

并按如下方式使用它

new CallBack<String>() {

            @Override
            public String CallBack(String s) {
                // TODO Auto-generated method stub
                return null;
            }

        };

new CallBack<Integer>() {

            @Override
            public Integer CallBack(Integer s) {
                // TODO Auto-generated method stub
                return null;
            }


        };

关于java - 在接口(interface)中是否有重载方法的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38087626/

相关文章:

java - 使用计划的 cron 时,Spring 计划正常关闭不起作用

android - 在 Android 应用程序中实现轮播(无 RenderScript)

java - E/Volley : com. android.volley.ParseError : org. json.JSONException

c# - 尽管未实现接口(interface),代码仍能正常工作

c# - C# 中的非虚拟方法、静态绑定(bind)和接口(interface)

java - 将文件从应用程序复制到系统目录?

java - 使用 setText 清除 TextField 的内容在 AWT 中不起作用

java - spring框架3.2.13是否与Java 11兼容

java - 通过外部 AsyncTask 将项目添加到 Activity 中的 ListView

language-agnostic - 为什么大多数系统架构师都坚持首先对接口(interface)进行编程?