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中什么是接口回调
可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。
实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。
Java语言特点
Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。
例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。
在JAVA里 什么是回调函数啊.
所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。
SAX的我不会写,只会用DOM4J写解析xml文档的例子
如下:
SAXReader sax= new SAXReader();
String file= this.getServletContext().getRealPath("/xml/news.xml");//获得xml文档的路径
Document doc= sax.read(file);
//获得根元素坐标
Element root= doc.getRootElement();
String value="";
List nodes= root.selectNodes("//new");
//得到元素个数
int size= nodes.size();
//定位到最后一个元素
Element el=(Element) nodes.get(size- 1);
//得到该元素所有属性集合
Iterator it= el.attributeIterator();
//循环遍历
while(it.hasNext()){
//将集合中包含的元素转换为Attribute类型
Attribute att=(Attribute) it.next();
//取出里面的数值
value= att.getValue();
}
这样所有的值就能都取出来了
不过要导入这几个包包
org.dom4j.*
org.dom4j.io.*
java.util.*
java.io.*
JAVA回调机制
你理解的基本对,这是一种回调机制的情况。方法中传递的接口实现上就是一个监听器Listener的接口,调用方法时,传具体的接口实现的实例,也可以事先就传入(通常是叫注册监听器)。这种情况常见于Java Swing编程中的事件机制。
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。
同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;
回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;
异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。
异步调用实现是回调的一种情况,比如方法可以提前返回,具体的逻辑执行可以在另外一个线程中,执行完成后,由这个线程来回调,负责通知调用方。
如果你还想了解更多这方面的信息,记得收藏关注本站。