我正在使用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
变种?
答案 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版本。