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

java回调机制

发布时间: 2022-06-28 20:07:03

java中什么是接口回调

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

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

Java语言特点

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

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

② 如何理解java中回调机制和模板机制

即回调就是体现在你的同学又反过来拨打你的号码。 拿这个例子类比Ajax中的回调机制以及Spring中HibernateTemplate用到的回调+模板机制,可以更容易地理解回调机制。 Ajax代码:Java代码 functiontest{if(window.ActiveXObject){xmlHttp=newActiveXObject( Microsoft.XMLHTTP);}elseif(window.XMLHttpRequest){xmlHttp=newXMLHttpRequest();}xmlHttp.onreadystatechange=callback; xmlHttp.open(…); xmlHttp.send(null);} functioncallback{} 其中xmlHttp.onreadystatechange = callback 就是表示在state改变时调用callback函数,而这个callback就是一个回调函数。类比:xmlHttp发出请求就相当于你打电话给你的同学,xmlHttp不知道state何时发生变化,就相当于你不知道你的同学何时能解决问题。Callback函数就相当于你的电话号码, state发生变化时会调用callback函数,同样你的同学解决问题后会打电话通知你。 Spring中HibernateTemplate的回调机制与模板方法 HibernateTemplaet的源码很复杂,我们可以写一段简单的代码来模拟一下:Java代码interfaceCallBack{publicvoiddoCRUD();}publicclassHibernateTemplate{publicvoidexecute(CallBackaction){ getConnection(); action.doCRUD(); releaseConnection();}publicvoidadd(){execute(newCallBack(){publicvoiddoCRUD(){System.out.println( 执行add操作...);}});}publicvoiddelete(){execute(newCallBack(){publicvoiddoCRUD(){System.out.println( 执行delete操作...);}});}publicvoidgetConnection(){ System.out.println( 获得连接...);}publicvoidreleaseConnection(){ 释放连接...);}}类比:execute方法可以体现出模板模式。以add方法为例,调用execute方法就相当于你打电话给你的同学,但是你的同学说需要时间,就像execute方法需要首先获得连接一样,于是你把CallBack匿名类传递给它,在它获得连接之后会执行你的add操作,这就相当于你把电话号码告诉你的同学,他解决问题之后再打给你一样。

③ java回调的作用

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

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

④ java构造器是不是就是构造函数,还有回调机制是什么东西

构造器就是构造函数,也叫构造方法。
回调机制需要一个调用者(一个函数或方法),一个回调函数,还有一个触发条件。首先要把回调函数注册到调用者所在的类中,程序在执行的时候首先执行调用者,当调用者执行完成或满足某个条件的时候会去调用回调函数。ajax使用的就是回调机制.

⑤ 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的事件编程模式下我们写的那些按钮点击事件中的代码其实就是回调函数的实现代码

⑥ 请问JAVA中接口中自动回调方法的原理是什么

那就是继承,你实现了一个接口就是这个接口的子类了,当然就可以调用了。子类自动继承父类的方法,但是接口的方法是抽象的你必须要实现,所有可以确保你实现这个接口就必须有这个接口的方法了。而且子类变父类是可以直接用的,所以就可以自动调用了。
最好的方式就是去看下源代码,你就完全明白这种机制了。然后自己可以写个小例子比如:监听Vector只要加入了新元素就发个消息的。

⑦ Java回调以及如何获取线程的执行结果

软件模块之间存在调用的接口,从调用方式来看,有同步调用、回调、异步调用这三种方式:

  • 同步调用是是一种阻塞式调用,调用方要等待被调用方执行完毕返回后才能获取调用的执行结果,是一种单向调用。

  • 回调是一种双向调用,调用方在执行被调用方后,被调用方会调用被调用方的接口;

  • 异步调用是一种类似消息或者事件的机制,接口在收到某个消息或发生某事件时,会主动通知客户方,通常使用回调来实现异步调用。

Java回调的必须要素:
1.雇主类必须有可以被观察者调用的方法A;
2.观察者必须持有可以调用A的对象的引用。

在实际工作中,我们通常将方法A以interface或者内部类的形式来实现,然后把包含有A的类的对象引用传递到观察者中。

Java中的线程的返回值是void,并且是一个异步执行流,所以我们没有直接的方法来获取线程执行后的结果,即不能直接知道线程何时结束,以及合适去获取线程执行任务后的结果。由于回调的存在,我们可以在线程中以回调的方式通知线程的调用者线程的结束时间,并可以将任务的结果通过回调回送到调用者中。

⑧ JAVA中 接口是什么 接口的回调是什么

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。

接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。看下面示例。interface People{ void peopleList();}class Student implements People{ public void peopleList(){ System.out.println("I’m a student.");}}class Teacher implements People{ public void peopleList(){ System.out.println("I’m a teacher.");}}public class Example{ public static void main(String args[]){ People a; //声明接口变量a=new Student(); //实例化,接口变量中存放对象的引用a.peopleList(); //接口回调a=new Teacher(); //实例化,接口变量中存放对象的引用a.peopleList(); //接口回调}}结果:I’m a student.I’m a teacher.再来看看向上转型(upcasting)的概念。

用 Java 接口实现回调函数的等价功能熟悉 MS-Windows 和 X Window System 事件驱动编程模型的开发人员,习惯于传递在某种事件发生时调用(即“回调”)的函数指针。Java 的面向对象模型目前并不支持方法指针,Java 的接口支持提供了一种获得回调的等价功能的机制。其技巧就是:定义一个简单接口,并在该接口中声明我们要调用的方法。假定我们希望在某个事件发生时得到通知。我们可以定义一个接口:InterestingEvent.javapackage org.zj.sample;public interface InterestingEvent { public void interestingEvent ();}这使得我们可以控制实现该接口的类的任何对象。因此,我们不必关心任何外部类型信息。发出事件信号的类必须等待实现了 InterestingEvent 接口的对象,并在适当时候调用 interestingEvent() 方法。EventNotifier.javapackage org.zj.sample;public class EventNotifier { private InterestingEvent ie; private boolean somethingHappened; public EventNotifier(InterestingEvent event) { ie = event; // 保存事件对象以备后用。 somethingHappened = false; // 还没有要报告的事件。 } public void doWork() { if (somethingHappened) { // 检查设置的谓词。 ie.interestingEvent();// 通过调用接口的这个方法发出事件信号。 } } public void setHappened(){//设置谓词。 somethingHappened=true; }}在上例中,使用 somethingHappened 谓词来跟踪是否应触发事件。希望接收事件通知的代码必须实现 InterestingEvent 接口,并将自身引用传递给事件通知程序。CallMe.javapackage org.zj.sample;public class CallMe implements InterestingEvent { @SuppressWarnings("unused") private EventNotifier en; public CallMe() { // 注意 EventNotifier (InterestingEvent event),应该传递一个接口类型。 // 而下面将this,即实现了InterestingEvent接口的CallMe实例传递给//EventNotifier。也就是所谓的接口回调了。 en = new EventNotifier(this); // 创建事件通知程序,并将自身引用传递给它。 } // 为事件定义实际的处理程序。

⑨ java中回调函数怎么实现,和windows机制下有何区别

回调函数一般用在非即时类方法调用

比如我调用一个方法,这个方法由于处理时间不定长,所以没有等待机制,直接返回,然后在处理完成以后需要通知调用该方法的地方继续执行,就存在了回调方法。

热点内容
最快脚本语言 发布:2025-02-04 22:27:23 浏览:525
安卓的人脸识别在哪里 发布:2025-02-04 22:16:45 浏览:673
悠然服务器的ip是什么 发布:2025-02-04 22:10:17 浏览:65
3des源码 发布:2025-02-04 22:09:16 浏览:808
如何备份数据库表 发布:2025-02-04 22:09:07 浏览:293
如何删除下载的闹钟铃声安卓 发布:2025-02-04 22:03:35 浏览:658
死神脚本 发布:2025-02-04 21:57:03 浏览:167
phpposthtml 发布:2025-02-04 21:37:46 浏览:89
最新asp源码 发布:2025-02-04 21:17:33 浏览:571
让linux死机 发布:2025-02-04 20:48:08 浏览:141