java接口回调 java什么叫接口的回调
大家好,今天给各位分享java接口回调的一些知识,其中也会对java什么叫接口的回调进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
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 什么是回调
所谓回调,就是客户程序Client调用服务程序Service中的某个方法A,然后Service又在某个时候反过来调用Client中的某个方法B,对于Client来说,这个B便叫做回调函数
回调实现的步骤
1、定义回调接口和回调方法
2、Client实现回调接口和回调方法,并在Client中包含Service引用,通过引用调用Servie中的方法并且必须传入一个当前对象Client(因为当前对象实现了CallBack接口所以也属于接口对象)
3、在Service中定义一个接口对象并在方法中对初始化(将Client传过来的当前对象赋值给接口对象),通过接口对象调用接口中方法(调用的Client实现的接口方法)
4、测试
JAVA回调机制
你理解的基本对,这是一种回调机制的情况。方法中传递的接口实现上就是一个监听器Listener的接口,调用方法时,传具体的接口实现的实例,也可以事先就传入(通常是叫注册监听器)。这种情况常见于Java Swing编程中的事件机制。
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。
同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;
回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;
异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。
异步调用实现是回调的一种情况,比如方法可以提前返回,具体的逻辑执行可以在另外一个线程中,执行完成后,由这个线程来回调,负责通知调用方。
文章到此结束,如果本次分享的java接口回调和java什么叫接口的回调的问题解决了您的问题,那么我们由衷的感到高兴!