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)吗???求大神为我解答一下!! 展开
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)吗???求大神为我解答一下!! 展开
展开全部
其实这个问题你看看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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询