java 回调方法是什么意思_java什么是回调

日记网 >> 专题

java什么是回调

更新时间:2018/6/19 22:18:00  点击率:776  手机版

java什么是回调来自简单日记网精选推荐。软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。同步调用是三者当中最简单的,而回调又常常是异步调用的基础,因此,下面我们着重讨论回调机制在不同软件架构中的实现。

java的回调简单的说,回调函数就是通过其指针来调用的函数(这句话确实够简单的,下面会详细的描述);回调函数不会被自己所在的对象调用,只会在调用别人的方法的时候反过来被调用。我们知道android程序是通过java来实现的,java中是没指针的,那么怎么实现回调呢,通过接口、或者抽象类。

实现步骤:

1、定义一个接口,其中包含一个方法a;

2、定义一个实现这个接口的类a,实现方法 a(此处的a就是传说中的回调函数,此处不一定要在声明类的时候实现这个接口,也可以在类中去实现这个接口,我会分别举例子)

3、定义一个类b,在b中定义一个方法b,b以第一步中定义的接口作为参数;

4、在a中调用方法b,把自己作为参数传递进去;

5、在b中通过传递进来的参数a(实现了接口)去调用a,这就实现了回调;

至于为什么要使用回调函数呢?在一位大神的博客里面看到这句话“回调功能是实现功能和定义分离的一种手段,是一种松耦合的设计思想”,有的人就会问了,为什么要实现定义和功能分离呢?我们在刚开始接触面向对象的这个概念的时候,应该经常听到这种说法:面向对象是要实现高内聚、低耦合,方便程序的修改和扩展。我觉得函数的定义和功能的分离应该也是这个道理吧。在下面的例子中我会在注释中从另外一个方面说明回调函数的必要性。

其次,看代码吧

代码1,在声明类的时候实现接口:

[java] view plaincopypackage com.callback;

/* 第一步:定义一个接口,其中包含一个方法a*/

public interface callback {

public void a(int i);

}

[java] view plaincopypackage com.callback;

/* 第二步:定义一个实现这个接口的类a,实现方法 a*/

public class a implements callback{

static b b = new b();

/* 此处为什么要定义一个常量呢?

* 我是想从另一个方面(松耦合的设计思想算是一方面吧)说明回调方法的必要性,

* 暂时先不用管,后面会继续说明的*/

final int constant = 1;

@override

/* 回调方法不会在a类中被调用的,注意看待会他会在哪被调用 */

public void a(int result) {

// todo auto-generated method stub

system.out.println(result);

}

public static void main(string[] args) {

// todo auto-generated method stub

/* 第四步:在a中调用方法b,把自己作为参数传递进去,

* 此处a中的常量constant,也会随着a被传到b中*/

b.b(new a());

}

}

上一篇:直截了当该如何造句

下一篇:双语阅读:专心地忧伤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值