[英]Java Interface Method call
我有如下的Java接口
public interface IFilter
{
public void doFilter();
}
我將這個接口實現為Filter1, Filter2, ...
我將這些實現添加到List<IFilter>
。
private final List<IFilter> filterChain = new ArrayList<>();
以下是示例展示類
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.
}
}
我遍歷此列表以調用doFilter()
。
public void filter()
{
for(IFilter filter: filterChain)
{
filter.doFilter();
}
}
但這給出了一個錯誤
找不到符號filter.doFilter();
符號:方法doFilter()
位置:IFilter類型的變量過濾器,其中IFilter是類型變量:IFilter擴展在類FilterChain中聲明的對象1錯誤
我無法理解這里出了什么問題?
注意
其中IFilter是類型變量
即你有類似的東西
class FilterChain<IFilter> {
...
public void filter()
{
for(IFilter filter: filterChain)
{
filter.doFilter();
}
}
}
在這里, IFilter
不是引用接口IFilter
,而是引用type參數。 完全等同於
class FilterChain<T> {
...
public void filter()
{
for(T filter: filterChain)
{
filter.doFilter();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.