在接口中是否有重载方法的替代方法?

Is there an alternative to overloading methods in an Interface?

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

现状:

public interface CallBack {
    void CallBack(String s)
}

我认为可行的方法:

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

这(显然对你们大多数人来说)告诉我在使用 CallBack 时我必须实现这两种方法,这不是我的预期用途。
我知道我现在可以 'fix' 通过将其更改为 void CallBack(Object o),但我不喜欢模棱两可的类型,并希望使其更加稳固。

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

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

...或...

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

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

您可以使用如下通用接口

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;
            }


        };

您应该通过指定泛型类型参数使您的接口成为泛型接口,如下所示:

public interface Callback<T>{
     T callback(T t);
}

您的具体实现如下所示:

public class StringCallback implements Callback<String>{
  String callback(String  string){
    //TODO: provide your implementation here.
  }
}

与您实现整数版本的方式相同。