黑马程序员技术交流社区

标题: 关于File文件对象的疑惑。谢谢指导! [打印本页]

作者: 刘宁    时间: 2012-3-25 11:38
标题: 关于File文件对象的疑惑。谢谢指导!
class FileDemo2
{
        public static void main(String[] args)
        {
                listDemo();
        }

        public static void listDemo()
        {
                File f = new File("c:\\");
                String[] names = f.list();
                for(String s : names)
                {
                        System.out.println(s);
                }
        }
        public static void listRootsDemo()
        {
                File[] files = File.listRoots();

                for(File file: files)
                {
                        System.out.println(file);
                }
        }
}
问题1 :为什么listRoot不用new一个File对象?而list()却需要new一个对象出来?
问题2 :listRoot的返回值类型怎么是File对象的 数组? 不是也应该是String类型的数组吗?
作者: 应佳锋    时间: 2012-3-25 12:43
问题1回答:因为listRoot是File的一个静态方法   而list()却是File的一个实例方法
问题2回答:这个是设计的人的思路 等你理解了OOP思想就会明白为什么listRoot的返回值类型怎么是File对象的
作者: 刘元明    时间: 2012-3-25 12:46
1.listRoots()是File的静态方法,可以不用创建对象通过类名调用,表示列出可用的文件系统根;
而list方法是File中非静态的方法,需要创建File对象去调用。
2.File是文件和目录路径名的抽象表示形式,那么根据1,数组中的元素不就是系统的根目录所属类型不就是File吗,所以返回的是File类型的数组
作者: 贠(yun)靖    时间: 2012-3-25 17:17
File  创建对象是把文件路径封装成一个对象   而list()是FIle类中的一个方法   列出次目录对象的所有文件
    而listRoots()是 File类中的一个静态方法 调用它是不需要创建对象的  可以直接用类名调用
   listRoots()的功能是返回所在路径的所有文件夹   而每一个文件夹可以看成一个File 类的对象  
   所以返回类型是File的数组  可以把文件夹对象存入到File【】数组中




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