黑马程序员技术交流社区
标题:
io流FilenameFilter()疑问
[打印本页]
作者:
凝聚
时间:
2013-10-29 16:15
标题:
io流FilenameFilter()疑问
本帖最后由 凝聚 于 2013-10-29 20:46 编辑
public static void listss()
{
File dir=new File("D:\\File\\a");/*
String[]arr=dir.list(new FilenameFilter()
{
public boolean accept(File dir,String name)
{
System.out.println("dir路径:"+dir+"................................."+"name:"+name);
/*if(name.endsWith(".xls"))
return true;
else
return false; //过滤掉所有的值。true返回所有的值*/
return name.endsWith(".txt");
}
});
*/
/**/中的代码是什么格式啊,???
作者:
卜弦
时间:
2013-10-29 16:51
[code]/*
这个是匿名内部类
匿名内部类的格式: new 父类或者接口(){定义子类的内容}
其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。
匿名内部类要与本类外部的一个类有继承关系或者实现一个接口。这样就可以用父类或者接口来实例化。
比如本程序中,我把不必要的内容去掉就变成了:
String[]arr=dir.list(new FilenameFilter()
{
public boolean accept(File dir,String name)
{
}
});
还可以再进一步简化:dir.list(new FilenameFilter(){});注意这里的“;”不能掉!!
实际上就是list方法中传入了一个实例化的FilenameFilter接口,这个接口带有内容.
对于该例子我们如果不使用简写方式传入接口,则需要如下书写:
首先要覆盖接口FilenameFilter中的accept()方法即:
interface FilenameFilter()
{
public boolean accept(File dir,String name)
{
}
}
然后再在要调用该接口的类中实例化并调用。
FilenameFilter filter = new FilenameFilter();
dir.list(filter);
这样做很麻烦的。
所以匿名内部内可以简化书写
*/
复制代码
[/code]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2