理解Java接口回调

初步认识:

 

 

实现步骤:

1、创建一个回调接口。

2、创建一个回调对象实现回调接口。

3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用回调对象的某方法。

代码示例:

实例:Boss通知员工做事情,员工完成任务之后告诉Boss完成情况。

说明:Callback:回调接口。Boss:回调对象。Employee:控制器对象。

1、创建一个回调接口

public interface Callback {
    public void yes();
    public void no();
}

2、创建一个回调对象实现回调接口 

复制代码
//  Boss需要实现回调的接口
public class Boss implements Callback{
//    传入一个员工对象
    private Employee employee;
    public Boss(Employee employee) {
        this.employee = employee;
    }
    
//    告诉员工要做什么事情
    public void doEvent(String event) {
        System.out.println("Boss:"+event);
//      将当前对象传给员工,员工才可以回调
        employee.doSomething(this, event);
    }
    
//    员工完成事情后回调的方法
    @Override
    public void yes() {
        System.out.println("Boss:任务完成得很不错,下个月给你涨工资");
    }
    @Override
    public void no() {
        System.out.println("Boss:任务没完成,好好反思一下");
    }
    
}
复制代码

3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用回调对象的某方法

复制代码
public class Employee {
    public Employee(){}
 
//    完成boss交代的事情,回调接口作为参数穿过来
    public void doSomething(Callback callback, String event) {
        String flag=null;
        System.out.println("Employee:正在做:"+event);
        
//        根据完成情况通知Boss,即接口回调
        System.out.println("Employee:完成了任务!");
        flag="完成";
        if(flag.equals("完成")){
            callback.yes();
        }
        
        System.out.println("Employee:未完成任务!");
        flag="未完成";
        if(flag.equals("未完成")){
            callback.no();
        }
        
    }
}
复制代码

4、测试:

public class Test {
    public static void main(String[] args) {
        Employee employee=new Employee();
        Boss boss = new Boss(employee);
        boss.doEvent("写hello world!");
    }
}

结果:

 

原文链接:https://blog.csdn.net/qq_41630866/article/details/88015833?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control

posted @   所向披靡zz  阅读(536)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示