用Java回调(代码说明)

zen*_*ngr 5 java callback

我在Java中遇到了关于回调的问题.她的是正在运行的代码和原来的答案在这里.

  1. 但是我不明白它对回调有什么用呢?
  2. 你能解释一下Java程序员的回调概念吗?

码:

public class Main {

    public interface Visitor {
        int DoJob(int a, int b);
    }


    public static void main(String[] args) {
        Visitor adder = new Visitor(){
            public int DoJob(int a, int b) {
                return a + b;
            }
        };

        Visitor multiplier = new Visitor(){
            public int DoJob(int a, int b) {
                return a*b;
            }
        };

        System.out.println(adder.DoJob(10, 20));
        System.out.println(multiplier.DoJob(10, 20));

    }
}
Run Code Online (Sandbox Code Playgroud)

mad*_*ani 6

我在这个时候写了一篇小博文:http : //madhurtanwani.blogspot.com/2010/09/callbacks-in-java.html.希望能帮助到你!

在我尝试解释上面的代码之前,我必须说,它不是最直观或最好的回调.我在帖子中使用的示例是Collections.sort(),它清楚地显示了回调部分.

Neverthelss,对于上面发布的代码,想到这样的:

  1. main()函数实际上是一个数字(读取数据)流解析算法,它将解析一对数字(数据集)然后对它们进行操作.
  2. 现在,考虑到关注点的分离,main()函数既不知道也不了解可以对数据集执行哪些操作.实际上它甚至不应该关心数据集的数据类型.
  3. 但是,由于这些数据集特定于您的域,因此主要功能应理想地数据处理委派给您的域特定类.
  4. 为此,它必须强制与特定于域的调用者(main的调用者)签订合同,然后说 - 看,我会doJobVisitor interface实现时调用该方法,每当我收到一对数据集时.调用者必须做的是实现Visitor接口并实现特定于域的逻辑来处理数据集.

的一部分委托从处理呼叫者,回被叫方被称为回调使用实现interface用Java(合同规范).