关于FilenameFilter的一点疑问

tzyhys 2008-04-02 10:44:57
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才能实现过滤,大家说说看
...全文
200 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
墨水鱼 2008-04-02
  • 打赏
  • 举报
回复
可以写个构造器调用,也可以写匿名类调用。
在String[]s=dir.list(new filenameFilter("t"));中,传进去的就是一个实例。
用匿名类,传进去的也是一个实例。
都是构造完的
dracularking 2008-04-02
  • 打赏
  • 举报
回复
你覆盖了 dynamic binding
  • 打赏
  • 举报
回复
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方法

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧