黑马程序员技术交流社区

标题: FilenameFilter对象调用accept(FilenameFilter fnf,String s)的运行原理 [打印本页]

作者: wxlz520    时间: 2012-11-30 21:33
标题: FilenameFilter对象调用accept(FilenameFilter fnf,String s)的运行原理
import java.io.*;

class  FileDemo2
{
        public static void main(String[] args)
        {
                //File dir = new File("c:\\");
                //File[] files = dir.listFiles();

                //for(File f:files)
                //{
                //        System.out.println(f.getName()+"---"+f.length());
                //}

                //System.out.println(files);
                //listRootsDemo();
                listDemo_2();
        }

        public static void listDemo_2()
        {
                File dir = new File("C:\\Documents and Settings\\Administrator\\桌面\\day20");
                //FilenameFilter fnf=new Test();
                String[] arr = dir.list(new Test());
                //System.out.println(arr);
                for(String name : arr)
                {
                        System.out.println(name);
                }
        }

        public static void listDemo()
        {
                File f = new File("c:\\abc.txt");

                String[] names = f.list();//调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
                for(String name : names)
                {
                        System.out.println(name);
                }
        }
        public static void listRootsDemo()
        {
                File[] files = File.listRoots();

                for(File f : files)
                {
                        System.out.println(f);
                }
        }
}

class Test implements FilenameFilter
{
        public boolean accept(File file,String name)
        {
                System.out.println(file+"..."+name);
                return(name.endsWith(".bmp"));
        }
}
毕老师的视频上用的是匿名对象,我看的有点不爽,于是自己又实现了FilenameFilter接口的accept方法,不解的地方在 dir.list(new Test())这,我new了一个Test()对象,但是我并没有调用accept方法,更没有给它传递任何参数,那么file 和 name局部变量接收的是谁传递来的参数呢?实验演示虽然能打印出正确结果,貌似
file接收的是dir变量指向的对象,而name却有点像File f.getName()...跪请高人指导下,非常想知道accept是怎么实现的!:L




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2