gpt4 book ai didi

java - Java 中的回调(代码解释)

转载 作者:搜寻专家 更新时间:2023-10-31 08:21:21 25 4
gpt4 key购买 nike

我遇到了这个question关于Java中的回调。她正在运行code和原始答案here .

  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));

}
}

最佳答案

我之前写了一篇关于此的小博文:http://madhurtanwani.blogspot.com/2010/09/callbacks-in-java.html .希望对您有所帮助!

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

不过,对于上面贴出的代码,可以这样想:

  1. main()函数实际上是一个数字(读取数据)流解析算法,会解析一对数字(数据集),然后对其进行操作。
  2. 现在,考虑到关注点分离,main() 函数不应知道或理解可以对数据集执行哪些操作。事实上,它甚至不应该关心数据集的数据类型。
  3. 但是,由于这些数据集特定于您的领域,因此 main 函数最好将数据处理委托(delegate)给您领域的特定类。
  4. 为此,它必须与特定领域的调用者(main 的调用者)签订契约(Contract),然后说 - 看,我将调用 Visitor 上的 doJob 方法 interface 实现,每当我收到一对数据集。调用者必须做的是实现访问者接口(interface)并实现域特定逻辑来处理数据集。

委托(delegate)处理从调用者返回到被调用者的部分称为回调,使用Java 中的 interface(契约规范)。

关于java - Java 中的回调(代码解释),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4041522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com