我的界面有
之类的方法public interface IFilterManager {
public FilterAbs getFilter(String filterName);
public void saveFilter(FilterAbs filter);
}
然后我有一个实现这些的类。
public class FilterManager implements IFilterManager {
@Override
public JobFilter getFilter(String filterName) {
//Do stuff
}
@Override
public void saveFilter(JobFilter jobFilter)
//Do stuff
}
}
JobFilter是FilterAbs的具体类,eclipse对getFilter没有任何问题我很困惑为什么它与saveFilter有问题。错误是
MappedJobFilterManager类型的方法saveFilter(JobFilter)必须 覆盖或实现超类型方法
它不应该接受任何类型的FilterAbs作为它的参数吗?
答案 0 :(得分:3)
问题是签名不同。
所以你的界面中有public void saveFilter(FilterAbs filter);
和
public void saveFilter(JobFilter jobFilter)
代码。
请注意,public
在您的界面中也是多余的。默认情况下隐含public
。
您可以使用通用界面来缓解此问题:
public interface SomeInterface<T extends FilterAbs> {
public T getFilter(String filterName);
public void saveFilter(T filter);
}
虽然你想要实现的目标尚不清楚。
答案 1 :(得分:0)
因为方法不同,它有不同的参数,因此签名不同
public void saveFilter(FilterAbs filter);
public void saveFilter(JobFilter jobFilter)
答案 2 :(得分:0)
要覆盖,您需要精确的方法签名。
@Override
public void saveFilter(FilterAbs jobFilter)
//Do stuff
}