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

时间:2016-06-28 23:01:02

标签: java android interface callback override

我正在使用Interface作为CallBack(这两者我都很新)。到目前为止,我的所有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变种?

2 个答案:

答案 0 :(得分:7)

您可以使用以下通用界面

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


        };

答案 1 :(得分:-2)

您应该通过指定泛型类型参数将接口设置为通用接口:

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

您的具体实现如下所示:

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

您可以实现Integer版本。