java回调函数的例子

本文通过一个具体的Java示例介绍了回调机制的实现方式。示例中定义了一个Caller类,该类包含一个MyCallback类型的成员变量,并提供了一个设置回调的方法。在主函数中,通过匿名内部类实现了回调接口的具体方法,并调用了doCall方法来触发回调。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

public class Caller {  
  
    private MyCallback myCallback;  
      
    public void doCall(){  
        myCallback.func();  
    }  
  
    public void setMyCallback(MyCallback myCallback) {  
        this.myCallback = myCallback;  
    }  

    public interface MyCallback {  
  
        void func();  
      
    } 
      
}  

 

 

 

public class CallBackTest {  
  
    public static void main(String[] args) {  
          
        Caller caller = new Caller();  
      
        //实例化具体回调函数,实现回调方法  
        caller.setMyCallback(new MyCallback() {  
            @Override  
            public void func() {  
                System.out.println("Hello world");  
            }  
        });  
          
        caller.doCall();  
    }  
      
}  

 

 

### Java回调函数示例 为了展示Java中的回调机制,下面提供了一个完整的例子。此案例涉及三个主要部分:接口定义、具体实现类以及调用者。 #### 定义回调接口 首先创建一个名为`CallBackInterface`的接口,其中声明了抽象方法`process`用于接收列表并返回对象作为处理结果: ```java public interface CallBackInterface { Object process(List<String> list); } ``` #### 实现回调接口的具体逻辑 接着,在另一个类中实现上述接口的方法。这里以`MyCallbackImpl`为例,该类实现了具体的业务逻辑,比如遍历接收到的数据集合并对每项执行特定操作: ```java import java.util.List; public class MyCallbackImpl implements CallBackInterface { @Override public Object process(List<String> stringList) { StringBuilder result = new StringBuilder(); for (String item : stringList){ result.append(item).append(", "); } // 去除最后一个逗号和空格 if(result.length() > 0){ result.setLength(result.length()-2); } return result.toString(); } } ``` #### 使用回调机制 最后一步是在处理器类里利用之前准备好的组件完成实际的任务。在这个场景下就是`WorldListHandler`类,它负责初始化数据结构并将这些信息传递给任何实现了`CallBackInterface`的对象来进行进一步的操作[^1]。 ```java import lombok.Data; import java.util.ArrayList; import java.util.List; @Data public class WorldListHandler { private List<String> stringList = new ArrayList<>(); /** * 执行回调方法 */ public void execute(CallBackInterface callBackInterface){ Object processedResult = callBackInterface.process(stringList); System.out.println("Processed Result: " + processedResult); } /** * 添加元素到列表中以便测试 */ public void addItems(){ this.stringList.add("Item1"); this.stringList.add("Item2"); this.stringList.add("Item3"); } } ``` 当实例化以上各个组成部分之后就可以看到如何通过回调的方式让不同的模块之间相互协作而不必关心对方内部是如何工作的[^2]。 为了让这段代码正常工作,还需要编写一段简单的主程序来连接所有的片段,并观察最终效果: ```java public class MainApp { public static void main(String[] args) { // 创建处理器对象 WorldListHandler handler = new WorldListHandler(); // 向列表添加一些项目供后续处理 handler.addItems(); // 构建回调实现体 CallBackInterface callback = new MyCallbackImpl(); // 调用execute方法触发回调行为 handler.execute(callback); } } ``` 这样就完成了整个流程的设计与编码,展示了Java环境下典型的回调模式应用方式[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值