File f = new File(args[0]);
String[] list = f.list{new FilenameFilter() {
public boolean accept(File f,String s) {
return s.endsWith(".java");
}
}}这几句话创建了一个匿名类,accept()方式是测试文件s是否在文件列表f里,我不太明白这几句话的执行的先后顺序,是先创建一个匿名类,之后执行f.list()方法?还是怎样?我不太明白,请大家给指点一下!先谢谢了
String[] list = f.list{new FilenameFilter() {
public boolean accept(File f,String s) {
return s.endsWith(".java");
}
}}这几句话创建了一个匿名类,accept()方式是测试文件s是否在文件列表f里,我不太明白这几句话的执行的先后顺序,是先创建一个匿名类,之后执行f.list()方法?还是怎样?我不太明白,请大家给指点一下!先谢谢了
解决方案 »
- java 如何打开一个网站得到该网站的Url编码格式
- java怎么执行一个*.vbs脚本
- 请问如何用java操作.dbf数据库?如:如何创建连接、插入数据到.dbf中?
- 编译时提示需要 <标识符> 请大家帮忙,100分求
- 多线程的通信问题,麻烦大家帮我看看
- jdbc中sql语句是否可以使用这样的参数方式,如select * from a where id=:id
- 初学java,请教一个时间对比算法。
- 这样的引用是过期引用马?
- 这三句话定义了3个什么对象?请教!
- at java.io.DataInputStream.readUTF(Unknown Source),为什么总是报异常?
- 多项式求值
- 为什么说Java VM(虚拟机)可以是软件也可以是硬件
File f = new File(args[0]);
String[] list = f.list(new FilenameFilter() {
public boolean accept(File f,String s) {
return s.endsWith(".java");
}
})
当然先执行参数,然后才能传递参数
import java.io.File;
import java.io.FilenameFilter;
class Filter implements FilenameFilter{ @Override
public boolean accept(File dir, String name) {
return name.indexOf(".exe")!=-1;
}
}
public class Hello{
public static void main(String[] args){
File f=new File("C:\\WINDOWS");
String[] name=f.list(new Filter());
for (int i=0; i<name.length; i++) {
System.out.println(name[i]);
}
}
}相当于定义了一个过滤器实现了FilenameFiter接口,通过它的实现类构造对象时,都会过滤掉字符串
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]));
}从这可以看出,首先list方法需要一个对象实例,所以就先创建FilenameFilter的匿名实现类。
然后再去执行这个匿名实现类的accept方法,实现过滤