关于FilenameFilter的一点疑问

时间:2008-06-11 07:22:28   来源:论坛整理  作者:  编辑:chinaitzhe
import java.io.*;
class filenameFilter implements FilenameFilter{
private String p="";
public filenameFilter(String s)
{
p=s;
}
public boolean accept(File dir,String name)
{
return name.startsWith(p);
}
}
public class filter {


public static void main(String[] args) {
File dir=new File("c:/");
String[]s=dir.list(new filenameFilter("t"));
for(int i=0;i <s.length;i )
{
System.out.println(s[i]);
}
}

}
为什么我只用newfilenameFilter就可以调用过滤函数accept,accept不是构造方法,怎么执行了,我认为在new之后还应该调用
accept才能实现过滤,大家说说看
网友回复: public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) ¦ ¦ (filter == null)) {
return names;
}
ArrayList v = new ArrayList();
for (int i = 0 ; i < names.length ; i ) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return (String[])(v.toArray(new String[v.size()]));
}

这时jdk中 File类的list(FilenameFilter filter)的实现代码,list方法中调用了accept方法
网友回复:你覆盖了 dynamic binding
网友回复:JAVA交流与学习群:45609427
挑战技术,超越自我!!
网友回复:可以写个构造器调用,也可以写匿名类调用。
在String[]s=dir.list(new filenameFilter("t"));中,传进去的就是一个实例。
用匿名类,传进去的也是一个实例。
都是构造完的
关键字:FilenameFilter,一点,疑问,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面