Java接口方法调用
我有一个Java接口,如下所示Java接口方法调用,java,Java,我有一个Java接口,如下所示 public interface IFilter { public void doFilter(); } 我有一个接口的实现作为Filter1,Filter2。。。。我正在将这些实现添加到列表中 我正在迭代这个列表来调用doFilter 但这是一个错误 找不到symbol filter.doFilter; 符号:方法doFilter 位置:IFilter类型的变量过滤器,其中IFilter为 类型变量: IFilter扩展类Fil
public interface IFilter
{
public void doFilter();
}
我有一个接口的实现作为Filter1,Filter2。。。。我正在将这些实现添加到列表中
我正在迭代这个列表来调用doFilter
但这是一个错误
找不到symbol filter.doFilter;
符号:方法doFilter
位置:IFilter类型的变量过滤器,其中IFilter为
类型变量:
IFilter扩展类FilterChain 1中声明的对象错误
我不明白这里出了什么问题?注意
其中IFilter是一个类型变量
也就是说,你有
class FilterChain<IFilter> {
...
public void filter()
{
for(IFilter filter: filterChain)
{
filter.doFilter();
}
}
}
你能展示你的Filter1/Filter2类吗?你是如何编译的?命令行还是IDE?您是否确保编译了所有相关的源文件?理想情况下,您不仅应该提供代码段,还应该提供检查导入,可能您正在从另一个包导入IFilter。这绝对不是代码问题。该筛选器方法在哪个类中?您是否将它声明为泛型,并将IFilter作为类型参数?如果是,则类型参数已覆盖IFilter接口。使用不同的符号作为您的类型参数。不,它也不是这样工作的!问题是它无法从接口识别doFilter方法。@user34567:正如其他人之前提到的:请向我们展示实现方法filterNo的类FilterChain,它也不是这样工作的!是的,重点是解释为什么它不起作用。明白了!我现在已经删除了类型声明及其工作。
public class FirstFilter implements IFilter
{
private String name = "first";
@Override
public void doFilter()
{
System.out.println("First Filter !");
}
@Override
public boolean equals(Object obj)
{
return super.equals(obj); //To change body of generated methods, choose Tools | Templates.
}
@Override
public int hashCode()
{
return super.hashCode(); //To change body of generated methods, choose Tools | Templates.
}
}
public void filter()
{
for(IFilter filter: filterChain)
{
filter.doFilter();
}
}
class FilterChain<IFilter> {
...
public void filter()
{
for(IFilter filter: filterChain)
{
filter.doFilter();
}
}
}
class FilterChain<T> {
...
public void filter()
{
for(T filter: filterChain)
{
filter.doFilter();
}
}
}