Java:接口回调

一、整体流程

  1. 首先定义一个接口
  2. 在主函数中传入该接口,使用匿名接口实现
  3. 定义一个类,入参中包括该接口,并在类方法中调用了接口中的方法

接口回调整体流程逻辑图如下:

接口回调的时序图:

二、 代码示例

1. 定义接口

java 复制代码
public interface TaskCallback {
    void onTaskFinished(String result);
}

2. 接口回调实现(这里变化,实现了类里面调用同一个方法而产生不同的效果,有利于解耦)

java 复制代码
public class MyCallbackImpl implements TaskCallback {
    @Override
    public void onTaskFinished(String result) {
        System.out.println("回调接收到结果: " + result);
    }
}

3. 执行任务类

该类实现主要功能,并通过传入接口的变化,而改变方法中具体的行为

java 复制代码
public class TaskController {
    private TaskCallback callback; // 持有回调接口的引用

    public void setCallback(TaskCallback callback) {
        this.callback = callback; // 传入实现类的实例
    }

    public void executeTask() {
        System.out.println("任务开始执行...");
        // 模拟耗时操作
        try { Thread.sleep(2000); } catch (InterruptedException e) {}
        String data = "任务执行完毕";
        if (callback != null) {
            callback.onTaskFinished(data); // 当条件满足时,调用回调方法
        }
    }
}

4. 主方法

串联整体逻辑

java 复制代码
public class Main {
    public static void main(String[] args) {
        TaskController controller = new TaskController();
        MyCallbackImpl myCallback = new MyCallbackImpl();
        controller.setCallback(myCallback); // 设置回调
        controller.executeTask(); // 执行任务
    }
}

三、核心意义:为什么要用接口回调而不是直接在类中写死

接口回调的核心在于:实现了解耦

以二中的代码为例,当修改 代码 2 中的接口实现时,传入到 代码 3 中的任务执行类的接口方法就会改变,从而导致了任务执行类行为的变化。

实际上,任务执行类并不关注"传入的是哪个类,实现了什么方法",只关注应该怎么调用这个方法 ,而接口回调使得调用这个方法的方式得到了确定

因此,接口回调实现了接口与调用接口方法的实例类的解耦,修改接口实现时,不需要修改调用它的实例类,保证了代码的灵活性和可扩展性。

相关推荐
牧瀬クリスだ7 分钟前
观察者模式:一个对象变化,一群对象自动响应
java·观察者模式·设计模式
小张成长计划..11 分钟前
【Linux】26:线程互斥和同步
java·开发语言
邪修king3 小时前
Re:Linux 系统篇(三十五):进程间通信Chapter2:从匿名管道到进程池:Linux 进程间通信实战(深度理解「先描述,再组织」)
java·linux·运维
拆房老料3 小时前
【第四部分:Agentic 智能体设计模式】16. 一个 Prompt 搞不定复杂任务?试试 Prompt Chaining
java·前端·人工智能·设计模式·prompt
张张123y4 小时前
后端第十四课:Agent 记忆系统(让 Agent 记住上下文和用户,跨会话不健忘)
java·大数据·人工智能·python·agent·记忆
阿里嘎多学长8 小时前
2026-10-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
曹牧8 小时前
C#:空合并运算符
java·前端·数据库
布吉岛的石头9 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
golang学习记9 小时前
IDEA 2026年的玩法已经完全不同
java·ide·intellij-idea
小羊没烦恼!9 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php