什么是java的回调?

时间:2012-08-07 03:37:42

标签: java callback

我这里有这个代码。 (此代码取自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什么是回调?

3 个答案:

答案 0 :(得分:4)

回调是一种方法,您提供给正在使用的库,以便库可以调用您的方法来执行工作(或者更确切地说,返回代码,因此名称)。

更一般地说,任何两层代码都可以通过回调函数进行交互。

答案 1 :(得分:0)

回调实际上只是一个函数,您可以将其交给某些API,然后由API在某些预期事件上调用。例如,如果您正在使用某些网络API,那么您可以创建异步发送请求以及在发送请求完成后将调用的回调。你可以使用该回调来设置一些布尔值,让你知道如果/当你有新的东西要发送时你现在可以发送其他东西。

答案 2 :(得分:0)

在Java的上下文中,为接口实现的方法将被视为回调。在您的代码中,DirFilter实现了FilenameFilter,它具有accept方法。由于我们将DirFilter的实例传递给list方法,因此该方法可以调用accept方法,但不知道它的实现。