回调函数

回调函数是一种编程机制,它允许你将一个函数作为参数传递给另一个函数,并在某些特定条件下或事件发生时调用这个函数。下面通过一个简单的Java例子来解释回调函数的工作原理。

例子:使用回调函数处理任务完成的通知

假设我们有一个模拟的任务执行器,它可以执行一些耗时的任务(比如下载文件、计算等)。我们希望在任务完成后能够通知某个对象,以便进行后续操作,比如更新UI显示任务完成的消息。

1. 定义回调接口

首先,我们需要定义一个回调接口TaskCallback,它包含一个方法onTaskCompleted(),将在任务完成时被调用。

public interface TaskCallback {
    void onTaskCompleted(String result);
}

2. 实现任务类

接下来,实现一个Task类,该类接受一个实现了TaskCallback接口的对象作为参数。当任务完成时,它会调用这个回调对象的onTaskCompleted()方法。

public class Task {
    private TaskCallback callback;

    public Task(TaskCallback callback) {
        this.callback = callback;
    }

    public void execute() {
        // 模拟一个耗时的任务
        new Thread(() -> {
            try {
                Thread.sleep(2000); // 假设任务需要2秒完成
                String result = "任务已完成";
                if (callback != null) {
                    callback.onTaskCompleted(result);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();
    }
}

3. 使用回调

现在,我们可以创建一个实现了TaskCallback接口的类,并在任务完成时接收通知。

public class Main implements TaskCallback {

    public static void main(String[] args) {
        Main app = new Main();
        Task task = new Task(app);
        task.execute();
    }

    @Override
    public void onTaskCompleted(String result) {
        System.out.println(result); // 输出: 任务已完成
    }
}

在这个例子中,Main类实现了TaskCallback接口,并重写了onTaskCompleted()方法。当我们创建Task实例并传入Main实例时,任务完成后会自动调用Main中的onTaskCompleted()方法,从而实现了回调机制。

总结

  • 回调函数提供了一种机制,使得函数可以在特定事件发生时通知其他部分的代码。
  • 在上面的例子中,Task类并不知道具体如何处理任务完成后的逻辑,只知道在任务完成时应该调用提供的回调接口的方法。
  • 这种设计提高了代码的灵活性和模块性,使得不同功能的代码之间保持松散耦合。
posted @ 2025-05-14 11:10  某朝  阅读(23)  评论(0)    收藏  举报