当前位置:首页 > Java

java 回调如何实现

2026-03-18 16:01:15Java

回调机制的基本概念

回调是一种编程模式,允许在某个操作完成后通过函数通知调用方。Java 中通常通过接口或函数式接口实现回调,将函数作为参数传递并在特定事件触发时调用。

java 回调如何实现

使用接口实现回调

定义一个回调接口,具体类实现该接口并重写回调方法。调用方持有接口引用,在适当时机触发回调。

java 回调如何实现

// 1. 定义回调接口  
interface Callback {
    void onComplete(String result);
}

// 2. 实现回调接口  
class Worker {
    void doWork(Callback callback) {
        // 模拟耗时操作  
        String result = "Task Done";
        callback.onComplete(result); // 触发回调  
    }
}

// 3. 调用方使用回调  
public class Main {
    public static void main(String[] args) {
        Worker worker = new Worker();
        worker.doWork(new Callback() {
            @Override
            public void onComplete(String result) {
                System.out.println("Callback received: " + result);
            }
        });
    }
}

使用函数式接口(Java 8+)

通过 ConsumerFunction 等函数式接口简化回调实现,结合 Lambda 表达式减少样板代码。

import java.util.function.Consumer;

class AsyncTask {
    void execute(Consumer<String> callback) {
        String data = "Processed Data";
        callback.accept(data); // 触发回调  
    }
}

public class Main {
    public static void main(String[] args) {
        AsyncTask task = new AsyncTask();
        task.execute(result -> System.out.println("Result: " + result));
    }
}

异步回调示例

结合多线程实现异步回调,避免阻塞主线程。

class AsyncWorker {
    void startWork(Callback callback) {
        new Thread(() -> {
            try {
                Thread.sleep(1000); // 模拟耗时  
                callback.onComplete("Async Task Complete");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();
    }
}

public class Main {
    public static void main(String[] args) {
        AsyncWorker worker = new AsyncWorker();
        worker.startWork(result -> System.out.println(result));
        System.out.println("Main thread continues...");
    }
}

实际应用场景

  • 事件监听:GUI 开发中的按钮点击事件。
  • 异步任务:网络请求完成后更新 UI。
  • 插件扩展:框架通过回调允许用户自定义逻辑。

通过接口或 Lambda 表达式,Java 回调机制能灵活解耦调用方与被调用方,适用于多种异步和事件驱动场景。

分享给朋友:

相关文章

vue如何实现轮询

vue如何实现轮询

实现轮询的方法 在Vue中实现轮询可以通过以下几种方式完成,具体选择取决于项目需求和场景。 使用 setInterval 通过 setInterval 定时调用接口或执行任务,适合简单的轮询场景。…

vue如何实现录音

vue如何实现录音

使用Web Audio API实现录音 在Vue中实现录音功能可以通过Web Audio API结合MediaRecorder API来完成。以下是一个基础实现方案: 安装必要的依赖: npm i…

vue router如何实现

vue router如何实现

Vue Router 的实现方法 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是实现 Vue Router 的具体方法: 安装 Vue Router…

vue如何实现图

vue如何实现图

Vue 实现图表的方法 Vue 中实现图表可以通过多种方式,常见的有使用第三方库或自定义实现。以下是几种常见的方法: 使用 ECharts ECharts 是一个功能强大的图表库,支持多种图表类型。…

react如何实现keepalive

react如何实现keepalive

React 实现 KeepAlive 的方法 React 本身没有内置的 KeepAlive 组件,但可以通过以下方式模拟类似功能,实现组件状态保持或避免重复渲染。 使用 CSS 隐藏组件 通过 C…

vue如何实现刷新

vue如何实现刷新

实现页面刷新的方法 在Vue中实现刷新功能可以通过以下几种方式实现: 使用location.reload() 直接调用浏览器的原生方法强制刷新整个页面: methods: { refr…