You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

简单Java回调机制无法正常工作问题排查求助

问题分析与解决:Java回调机制失效问题

看你贴的代码,我立刻发现了两个核心问题,咱们一个个拆解:

1. 回调时机错误(最关键的问题)

你在addToList方法里立刻调用了callback.callBackMethod(),但新增元素的逻辑是放在TimerTask里延迟5秒执行的。这就相当于你还没把新东西放进列表,就喊老板来检查——老板当然看不到刚要加的内容,回调自然达不到预期效果。

2. 代码语法/拼写问题

  • Boss类实现的接口名写错了:CallableInterf...应该是CallableInterface,少了后缀字母,编译都通不过;
  • Boss类的接口实现不完整,没有重写callBackMethod方法的具体逻辑。

修复后的完整可运行代码

import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

// 回调接口定义
interface CallableInterface { 
    void callBackMethod(); 
}

// 工作类:负责执行延迟任务并触发回调
class Worker { 
    public static ArrayList<String> names = new ArrayList<String>(); 
    static Timer t = new Timer(); 

    public void addToList(String newAdd, CallableInterface callback) { 
        names.add("BMW"); 
        names.add("DODGE"); 
        t.schedule(new TimerTask() { 
            @Override 
            public void run() { 
                // 延迟任务执行完成后,再触发回调
                names.add(newAdd);
                callback.callBackMethod(); // 把回调移到这里,时机才对!
            } 
        }, 5000); 
        // 原来的回调在这里,时机错误,直接删掉
    } 

    public void printList(){ 
        System.out.println(Worker.names); 
    } 
}

// 回调方:实现回调接口,接收任务完成通知
class Boss implements CallableInterface {
    private Worker worker;

    public Boss(Worker worker) {
        this.worker = worker;
    }

    @Override
    public void callBackMethod() {
        // 回调触发时,打印最新的列表
        System.out.println("任务完成,当前列表内容:");
        worker.printList();
    }
}

// 测试入口
public class CallbackDemo {
    public static void main(String[] args) {
        Worker worker = new Worker();
        Boss boss = new Boss(worker);
        worker.addToList("Tesla", boss);
        System.out.println("等待5秒,任务执行完成后会触发回调...");
    }
}

核心修复说明

  • 调整回调触发时机:把callback.callBackMethod()移到TimerTask的run()方法内部,确保只有当延迟任务(添加新元素)执行完毕后,才通知回调方,这样拿到的就是最新的列表数据;
  • 修正接口拼写与实现:补全Boss类的接口实现逻辑,让回调能真正执行预期操作;
  • 增加测试逻辑:方便你直接运行验证,执行后会先打印提示,5秒后回调触发,输出包含"Tesla"的完整列表。

内容的提问来源于stack exchange,提问作者Aboodnet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:59:25