回调函数的理解

回调方法(Callback Method)是一种编程机制,指某个方法由其他代码(而非自身)在特定时机主动调用。它广泛应用于框架集成、事件处理、异步编程等场景。以下结合 Python 和 Java 语言,通过具体案例讲解回调的原理和应用。

Java 中的回调方法

基于接口的回调(典型场景:事件监听)

步骤:

  1. 定义回调接口(声明回调方法)。
  2. 调用者持有接口引用,并在特定时机调用接口方法。
  3. 开发者实现接口,定义具体回调逻辑。
示例:按钮点击事件回调
// 1. 定义回调接口
interface OnClickListener {
    void onClick(); // 回调方法:点击事件触发时执行
}

// 2. 调用者(按钮类)持有回调接口引用
class Button {
    private OnClickListener listener; // 回调接口引用

    // 注册回调方法
    public void setOnClickListener(OnClickListener listener) {
        this.listener = listener;
    }

    // 模拟按钮被点击(由系统触发)
    public void simulateClick() {
        System.out.println("按钮被点击");
        if (listener != null) {
            listener.onClick(); // 主动调用回调方法
        }
    }
}

// 3. 开发者实现回调逻辑
public class Main {
    public static void main(String[] args) {
        Button button = new Button();

        // 使用匿名内部类实现回调接口
        button.setOnClickListener(() -> {
            System.out.println("回调执行:处理点击事件(如跳转页面)");
        });

        button.simulateClick(); // 触发点击,自动调用回调方法
    }
}

ORM 框架中的生命周期回调(Hibernate 示例)

自动填充时间戳
@Entity
public class User {
    @Id
    private Long id;
    private String name;
    private LocalDateTime createdAt;

    // 实体持久化(插入数据库)前,由 Hibernate 自动调用
    @PrePersist
    protected void onCreate() {
        createdAt = LocalDateTime.now(); // 回调逻辑:设置创建时间
    }
}

Python 中的回调方法

Python 通过函数对象或可调用对象实现回调,无需显式定义接口,更简洁灵活。

函数作为回调参数

示例:异步任务完成后的回调
def async_task(callback):
    print("开始执行异步任务...")
    # 模拟异步操作(如网络请求)
    result = "任务结果"
    callback(result)  # 任务完成后,主动调用回调函数

# 定义回调逻辑
def handle_result(result):
    print(f"回调执行:处理结果 -> {result}")

# 调用异步任务,传入回调函数
async_task(handle_result)

类方法作为回调(可调用对象)

示例:事件监听回调
class EventListener:
    def __call__(self, event_type):
        print(f"回调执行:接收到事件 -> {event_type}")

def trigger_event(listener):
    event = "click"
    print(f"触发事件:{event}")
    listener(event)  # 调用回调对象

# 创建可调用对象(回调实例)
listener = EventListener()
trigger_event(listener)  # 传入回调实例

你可能感兴趣的:(spring,boot,spring,boot)