当前位置:首页 » 编程语言 » java回调

java回调

发布时间: 2022-01-08 14:04:40

A. java里面方法回调是什么意思

所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。Web Service以及Java的RMI都用到回调机制,可以访问远程服务器程序。

下面举个通俗的例子:
某天,我打电话向你请教问题,当然是个难题,^_^,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程;我的手机号码必须在以前告诉你,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。

通过上面个人感觉到回调更多的应用就是结合异步。比如:Ajax中js通过组件和服务器的异步通信。

B. JAVA里面方法回调是什么意思

注明:此答案为转载,出处:网络知道

====================================

比如你写了两个类A和B,并且各生成一个对应的实例a 和b ,在a 中有一个方法fa( 此方法只负责生成两个随机数)要调用b中的一个方法fb(此方法对两个数进行求各) 来进行求和,fb求得结果后要调用a的另一个方法ffa(此方法用于显示求得的结果),这时ffa就叫作回调函数,(反回来调用一下的意思)
为什么要这么麻烦呢,如果fb直接返回结果不好吗,试想如果fb执行时间较长,那么fa就会一直等结果而导致fa不往下执行了,此时如果用回调这个功能实现,由于 回调函数一般是由系统异步调用的,方法fa调用fb后就不用等而直接往下执行,比如可以再生成两随机数给fb,fb会依次得到结果后通过回调机制来调用ffa显示出来,其实就是为实现生成随机数和计算随机数的异步执行。好象fa和fb是两个独立执行的线程,提高程序效率。

异步调用是回调函数的一种典型应用

正是因为回调函数大多数情况下(98%的比例)最常用于异步的多线程程序中,所以大家经常认为只要用到回调函数了则程序就是异步的.这个理解不对

fa ,fb方法分别运行于两个线程中才能实现异步工作,因为回调函数只是实现异步调用的手段, 线程间通信(比如要进行线程间同步)时程序员常通过在一个线程中引发事件来通知另一线程响应,而引发事件其实就是一种调用回调函数的过程.由此可以理解VB的事件编程模式下我们写的那些按钮点击事件中的代码其实就是回调函数的实现代码

C. java中怎样定义回调函数

程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。目的达到。在C/C++中,要用回调函数,被掉函数需要告诉调用者自己的指针地址,但在JAVA中没有指针,怎么办?我们可以通过接口(interface)来实现定义回调函数。
假设我是程序员A,以下是我的程序a:
[java] view plainprint?
public class Caller
{
public MyCallInterface mc;

public void setCallfuc(MyCallInterface mc)
{
this.mc= mc;
}

public void call(){
this.mc.method();
}
}
还需要定义一个接口,以便程序员B根据我的定义编写程序实现接口。

public interface MyCallInterface
{
public void method();

}
于是,程序员B只需要实现这个接口就能达到回调的目的了:
public class B implements MyCallInterface
{
public void method()
{
System.out.println("回调");
}

public static void main(String args[])
{
Caller call = new Caller();
call.setCallfuc(new B());
call.call();
}
}

D. Java回调函数

应该是有一个函数式接口Phone,它有唯一一个方法call(),消费者类实现这个接口Phone,商店老板类的对象中保存一个List<Phone>,当中存放每个来买过热狗的实现了Phone方法的对象;每当一个热狗做好时,取出列表中第一个对象,调用它的call()方法通知它热狗已做好。

E. java回调的作用

这篇的例子已经非常简洁了,实在是不需要加注释了。
你直接把问题提出来吧。

补充点东西吧:一般来说类的成员变量一般都是数据对象,主要是用来传递数据用的。而回调的意思是把一段程序作为成员变量,在特定的场合使用该段程序。这就是回调的核心。

F. Java中什么是接口回调

可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。

实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。

Java语言特点

Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。

例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。

G. java 的回调函数是什么 讲的简单些

就是你妈妈在做饭,你在玩电脑。妈妈做饭是回调函数,饭做完了会通知你,随后你再执行关闭电脑方法去吃饭。没有回调函数的话,在妈妈做完饭以前,你不能做其他事,只能等。做完饭了,你结束等待,去吃饭

H. java 如何写回调方法

publicclassCaller
{
publicMyCallInterfacemc;

publicvoidsetCallfuc(MyCallInterfacemc)
{
this.mc=mc;
}

publicvoidcall(){
this.mc.method();
}
}

接口


{
publicvoidmethod();

}

测试


{
publicvoidmethod()
{
System.out.println("回调");
}
publicstaticvoidmain(Stringargs[])
{
Callercall=newCaller();
call.setCallfuc(newB());
call.call();
}
}

I. Java 什么是回调

  1. 所谓回调,就是客户程序Client调用服务程序Service中的某个方法A,然后Service又在某个时候反过来调用Client中的某个方法B,对于Client来说,这个B便叫做回调函数

  2. 回调实现的步骤
    1、定义回调接口和回调方法
    2、Client实现回调接口和回调方法,并在Client中包含Service引用,通过引用调用Servie中的方法并且必须传入一个当前对象Client(因为当前对象实现了CallBack接口所以也属于接口对象)
    3、在Service中定义一个接口对象并在方法中对初始化(将Client传过来的当前对象赋值给接口对象),通过接口对象调用接口中方法(调用的Client实现的接口方法)
    4、测试

J. JAVA 回调功能 实现方法

接口怎么实现不是回调关心的问题,事实上正式由于不关心接口怎么实现才被称之为回调。。。
本来都是高层策略调用低层支持模块,比如排序调用数组,但在C中我们经常看到集合遍历函数有一个visit的函数指针,这个visit正是回调函数,它可能是打印元素、把元素添加到集合、删除元素等高层策略,而低层的遍历函数不关心这些,它做的只是每找到一个元素就调用一次visit。
C#的委托的确有异步回调,JAVA我记得没有类似委托的实现。

JAVA只能用接口实现回调。接口回调的特征是一个实例持有一个接口的引用。例如:
interface CallBack
{
execute();
}
Class BaseClass
{
public CallBack executor;
}
这其实是DIP--接口倒置原则所要求的。

热点内容
儿童文学编译思想 发布:2024-12-25 10:22:49 浏览:311
vb反编译修改 发布:2024-12-25 10:21:21 浏览:755
老外解压 发布:2024-12-25 10:08:29 浏览:404
外网访问内网服务 发布:2024-12-25 10:04:49 浏览:641
起点小说怎么上传封面 发布:2024-12-25 10:03:34 浏览:628
java一维数组定义 发布:2024-12-25 09:42:06 浏览:250
大积木编程 发布:2024-12-25 09:38:14 浏览:689
喋血复仇配置不够怎么办 发布:2024-12-25 09:35:59 浏览:368
提示没有配置emo服务器地址 发布:2024-12-25 09:35:21 浏览:316
python编辑excel 发布:2024-12-25 09:21:19 浏览:154