Java接口方法调用

Java接口方法调用,java,Java,我有一个Java接口,如下所示 public interface IFilter { public void doFilter(); } 我有一个接口的实现作为Filter1,Filter2。。。。我正在将这些实现添加到列表中 我正在迭代这个列表来调用doFilter 但这是一个错误 找不到symbol filter.doFilter; 符号:方法doFilter 位置:IFilter类型的变量过滤器,其中IFilter为 类型变量: IFilter扩展类Fil

我有一个Java接口,如下所示

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();
         }
    }
}