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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘宁 中级黑马   /  2012-3-25 11:38  /  1640 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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类型的数组吗?

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

3 个回复

正序浏览
File  创建对象是把文件路径封装成一个对象   而list()是FIle类中的一个方法   列出次目录对象的所有文件
    而listRoots()是 File类中的一个静态方法 调用它是不需要创建对象的  可以直接用类名调用
   listRoots()的功能是返回所在路径的所有文件夹   而每一个文件夹可以看成一个File 类的对象  
   所以返回类型是File的数组  可以把文件夹对象存入到File【】数组中
回复 使用道具 举报
1.listRoots()是File的静态方法,可以不用创建对象通过类名调用,表示列出可用的文件系统根;
而list方法是File中非静态的方法,需要创建File对象去调用。
2.File是文件和目录路径名的抽象表示形式,那么根据1,数组中的元素不就是系统的根目录所属类型不就是File吗,所以返回的是File类型的数组

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
问题1回答:因为listRoot是File的一个静态方法   而list()却是File的一个实例方法
问题2回答:这个是设计的人的思路 等你理解了OOP思想就会明白为什么listRoot的返回值类型怎么是File对象的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马