A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 凝聚 中级黑马   /  2013-10-29 16:15  /  886 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 凝聚 于 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");
}
});
*/
/**/中的代码是什么格式啊,???

1 个回复

正序浏览
  1. [code]/*
  2. 这个是匿名内部类
  3. 匿名内部类的格式:  new 父类或者接口(){定义子类的内容}
  4. 其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。
  5. 匿名内部类要与本类外部的一个类有继承关系或者实现一个接口。这样就可以用父类或者接口来实例化。
  6. 比如本程序中,我把不必要的内容去掉就变成了:
  7. String[]arr=dir.list(new FilenameFilter()
  8. {
  9.         public boolean accept(File dir,String name)
  10.         {
  11.       
  12.         }
  13. });

  14. 还可以再进一步简化:dir.list(new FilenameFilter(){});注意这里的“;”不能掉!!
  15. 实际上就是list方法中传入了一个实例化的FilenameFilter接口,这个接口带有内容.

  16. 对于该例子我们如果不使用简写方式传入接口,则需要如下书写:
  17. 首先要覆盖接口FilenameFilter中的accept()方法即:
  18. interface FilenameFilter()
  19. {
  20.         public boolean accept(File dir,String name)
  21.         {
  22.       
  23.         }
  24. }
  25. 然后再在要调用该接口的类中实例化并调用。
  26. FilenameFilter filter = new FilenameFilter();
  27. dir.list(filter);
  28. 这样做很麻烦的。
  29. 所以匿名内部内可以简化书写
  30. */
复制代码
[/code]
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马