Java回调实现

本文深入探讨了软件模块间调用方式中的回调机制,包括同步调用、异步调用与回调的区别,并通过Java语言实例展示了如何实现回调。重点介绍了如何通过定义接口和子类实现回调功能,以及回调在实际应用中的典型场景。

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


======================================================
注:本文源代码点此下载
======================================================

回调机制

软件模块之间的调用方式,分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单项调用;回调是一种双向调用的方式,被调用方被调用的同时也会调用对方的接口;异步调用是一种类似消息的机制,不过他的调用方向刚好相反,接口的服务在收到某种消息时,会主动通知客户方。

java回调实现

java是通过定义一个接口,并在该接口中声明我们要调用的方法,来实现回调。

具体的实现通过一个汽车的例子来展现。

我们首先定义一个汽车的接口:

package com.huawei.callback;

public interface car {

public abstract void run();

public abstract void stop();

public abstract void restart();

public abstract void refuel();

public abstract void refit(string reason);

}

其中定义了作为一个汽车可以有的几个操作,但是都没有实现,需要子类去实现。

然后我们定义一个宝马汽车类,实现car接口

package com.huawei.callback;

public class bmw implements car {

@override

public void run() {

// todo auto-generated method stub

system.out.println("bmw is runing");

}

@override

public void refit(string reason) {

// todo auto-generated method stub

system.out.println("bmw is refiting because "+reason);

}

@override

public void refuel() {

// todo auto-generated method stub

system.out.println("bmw is refueling");

}

@override

public void restart() {

// todo auto-generated method stub

system.out.println("bmw is restarting");

}

@override

public void stop() {

// todo auto-generated method stub

system.out.println("bmw is stoping");

}

}

最后我们写一个测试类

package com.huawei.callback;

public class test {

public static void simulate(car c){

c.run();

c.stop();

c.restart();

c.refuel();

c.refit("test");

}

public static void main(string[] args){

bmw bmw = new bmw();

simulate(bmw);

}

}

输出

bmw is runing

bmw is stoping

bmw is restarting

bmw is refueling

bmw is refiting because test

回调主要是用在声明和实现分离的情况下(car和bmw分离),比如设计类库的人和用类库的人,设计类库的人不用管具体的功能是怎么实现的,他只需要回调对方的实现即可,具体怎么实现由用类库的人来做。

比较经典的例子还有排序时的比较函数,用户可以自行设计比较函数,排序算法回调用户的比较函数进行排序


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值