Discuss / Java / 问一个简单的问题

问一个简单的问题

Topic source

  File[] fs2 = f.listFiles(new FilenameFilter() { // 仅列出.exe文件

            public boolean accept(File dir, String name) {

                return name.endsWith(".exe"); // 返回true表示接受该文件

            }

        })

上面代码中  accept()方法 是什么时候被调用执行的  

谢谢大佬回复解答

public File[] listFiles(FilenameFilter filter) {
String ss[] = normalizedList();
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()]);
}

listFiles 源码 我觉得 我和大佬的差距 就是 能否 看懂这个源码 

看的 头疼 可以跳过么。。。。

只需要记得  accept() 方法 返回值 为true 就表示 不过滤

🌙

#3 Created at ... [Delete] [Delete and Lock User]

悟了 悟了  果然还是要先学函数式编程  

学完java 8 就好理解 多了 

这个和遍历集合的 forearch 类似

filter.accept(this, s)) 这里调用的

🌙

#4 Created at ... [Delete] [Delete and Lock User]

不得不说 这源码可读性真差

连{}都要省略


  • 1

Reply