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才能实现过滤,大家说说看
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才能实现过滤,大家说说看
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方法
在String[]s=dir.list(new filenameFilter("t"));中,传进去的就是一个实例。
用匿名类,传进去的也是一个实例。
都是构造完的