java关于File类中listFiles()方法源码问题

publicFile[]listFiles(FilenameFilterfilter){Stringss[]=list();if(ss==null)returnnull;... public File[] listFiles(FilenameFilter filter) {
String ss[] = list();
if (ss == null) return null;
ArrayList<File> files = new ArrayList<>();
for (String s : ss)
if ((filter == null) || filter.accept(this, s))
files.add(new File(s, this));//问题
return files.toArray(new File[files.size()]);
}
问题处:为什么是new File(s, this),s是名称,this是当前目录。但是按照file类的构造函数,第一个参数不应该是目录,第二个参数才是名称,为什么这里反过来了???不应该是new File(this, s)吗???求大神为我解答一下!!
展开
 我来答
_盖_聂_
2018-02-28 · TA获得超过131个赞
知道小有建树答主
回答量:113
采纳率:84%
帮助的人:43.9万
展开全部

其实这个问题你看看File的源代码就知道,File类中不只是有一个构造方法

/**    这个是个私有的构造函数,外部是用不了的
     * Internal constructor for already-normalized pathname strings.
     * The parameter order is used to disambiguate this method from the
     * public(File, String) constructor.
     */
    private File(String child, File parent) {
        assert parent.path != null;
        assert (!parent.path.equals(""));
        this.path = fs.resolve(parent.path, child);
        this.prefixLength = parent.prefixLength;
    }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式