在线等待:怎么会调用方法accept()呢? String[] args这个数组就是存放命令行参数的list=path.list(new DirFilter(args[0])) 而调用accept则是list方法里面定义的~~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我怎么也搞不懂?在前一个文件里,怎么会调用accept()呢?他只是引入了Dirfilter的new (Dirfilter(args[0]))也没明确说引用accept()方法啊? To:CyberH "而调用accept则是list方法里面定义的~~~~"能否说详细点儿,就是这里不明白,先谢了! 下面是JDK里面File.list的源码,FilenameFilter被定义成接口~~~ 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[0])); } 在你的DirFilter 类中实现了FilenameFilter接口,这个接口包括accept方法.也就可以看成是DirFilter 是FilenameFilter类的子类,当程序中path.list(new DirFilter(args[0]))时,可看成是把一个FilenameFilter类的传进去,在list中调用了FilenameFilter的accept方法,实际上是回调了DirFilter 的accept的方法,也就是面向对象中所谓的多态性 你实现FilenameFilter这个过滤文件的接口,你必须覆盖函数accept(),只有这样你才能过滤其它扩展名的文件,而显示你想要的扩展名文件。只要你实现了这个接口,同时添加与list=path.list(new DirFilter(args[0]));相类似的代码,这个accept函数就执行。这是系统本身默认调用的啊! 分数计算器-不知道怎么增加MouseClicked 读取输入判断数据类型,然后输出 怎么判断程序用的端口有新数据来了 请教一下 哪有CVS源代码?急!!!! 使用com.ms.win32出现java.lang.UnsatisfiedLinkError. 类的实用问题 ant的问题 求救,关于动态加载类的问题 当用executeQuery("..")返回一ResultSet结果集,那么ResultSet存在于什么地方?是在内存里面吗? 菜鸟问题,在线等候。。。 UDP传输问题,马上给分!!!!!!!!!!!!!!
他只是引入了Dirfilter的new (Dirfilter(args[0]))也没明确说引用accept()方法啊?
"而调用accept则是list方法里面定义的~~~~"
能否说详细点儿,就是这里不明白,先谢了!
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[0]));
}
也就可以看成是DirFilter 是FilenameFilter类的子类,当程序中path.list(new DirFilter(args[0]))时,可看成是把一个FilenameFilter类的传进去,在list中调用了FilenameFilter的accept方法,实际上是回调了DirFilter 的accept的方法,也就是面向对象中所谓的多态性