在接口中是否有重载方法的替代方法?
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.
}
}
与您实现整数版本的方式相同。
我正在使用 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.
}
}
与您实现整数版本的方式相同。