我这里有这个代码。 (此代码取自Thinking in Java 4th Edition)
//{Args: "D.*\.java}
import java.util.regex.*;
import java.io.*;
import java.util.*;
public class DirList {
public static void main (String[] args){
File path = new File(".");
String[] list;
if(args.length == 0)
list = path.list();
else
list = path.list(new DirFilter(args[0]));
Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
for(String dirItem : list ){
System.out.println(dirItem);
}
}
}
class DirFilter implements FilenameFilter{
private Pattern pattern;
public DirFilter(String regex){
pattern = Pattern.compile(regex);
}
public boolean accept(File Dir,String name){
return pattern.matcher(name).matches();
}
}
然后当我读到它的解释时,我遇到了这个
DirFilter
存在的唯一理由是提供accept( )
list( )
方法的方法,以便list( )
可以“回拨”accept( )
确定列表中应包含哪些文件名。从而, 这种结构通常被称为回调。
Soo什么是回调?
答案 0 :(得分:4)
回调是一种方法,您提供给正在使用的库,以便库可以调用您的方法来执行工作(或者更确切地说,返回代码,因此名称)。
更一般地说,任何两层代码都可以通过回调函数进行交互。
答案 1 :(得分:0)
回调实际上只是一个函数,您可以将其交给某些API,然后由API在某些预期事件上调用。例如,如果您正在使用某些网络API,那么您可以创建异步发送请求以及在发送请求完成后将调用的回调。你可以使用该回调来设置一些布尔值,让你知道如果/当你有新的东西要发送时你现在可以发送其他东西。
答案 2 :(得分:0)
在Java的上下文中,为接口实现的方法将被视为回调。在您的代码中,DirFilter
实现了FilenameFilter
,它具有accept方法。由于我们将DirFilter
的实例传递给list方法,因此该方法可以调用accept方法,但不知道它的实现。