我正在扩展一个类以及实现一个接口,它们都包含一个名为doFilter
的方法,这是我的超类中的最终方法,而从我的接口中是一个抽象方法。所以,现在我得到了编译器错误。
我该如何解决。
我的过滤器类是:
public class MyCacheFilter extends CachingFilter implements Filter {
// here is error, as compiler is thinking I am overriding dofilter of
// CacheFilter, although I have not specified any @Override annotation
public doFilter() {
}
}
最佳答案
如果该方法由CachingFilter
提供,则不必在MyCacheFilter
中提供实现。 (实际上,正如您所发现的,您不能。)
如果您确实希望doFilter
的行为与CachingFilter
提供的行为不同,则不能选择继承。在这种情况下,请考虑使用组合:
public class MyCacheFilter implements Filter {
CachingFilter cachingFilter = ...
@Override
public void doFilter() {
...
possibly refer to cachingFilter...
...
}
public String otherMethod() {
// delegate to cachingFilter
return cachingFilter.otherMethod();
}
}
[...]尽管我没有指定任何@Override注解
无论您是否明确提供
@Override
都没有关系。