本文目录一览:
在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 的回调函数是什么?? 讲的简单些
所谓回调,就是客户程序C调用服务程序S中的某个方法a,然后S又在某个时候反过来调用C中的某个方法b,对于C来说,这个b便叫做回调函数。
java中怎么使用callback函数
在很多场景,作为开发都会想到,在执行完毕一个任务的时候,能执行一个callback函数是多么好的事情。
现在模拟一下这个情景:
定义三个类。分别是主函数类。callback函数的接口类。业务处理类。在业务处理类中,处理完业务之后,执行一个callback函数。
[java] view plain copy
package comz;
public class Main {
public static void main(String[] args) {
new TestCallBack().compute(1000, new ComputeCallBack() {
@Override
public void onComputeEnd() {
System.out.println("end back!!!");
}
});
}
}
这是主函数类。new了一个业务处理类来处理逻辑,并在处理完毕之后,执行callback函数。
[java] view plain copy
package comz;
public class TestCallBack {
public void compute(int n, ComputeCallBack callback) {
for (int i = 0; i n; i++) {
System.out.println(i);
}
callback.onComputeEnd();
}
}
这是业务处理类。仅仅输出一些数字,然后执行回调函数。
[java] view plain copy
package comz;
public interface ComputeCallBack {
public void onComputeEnd();
}
这是回调函数的接口。
--------------------------------------
运行上面的代码,就会在输出结束的时候调用在Main里面的callback函数,输出System.out.println("end back!!!");
--------------------------------------
这里的原理是:
在主类中,新建业务类的时候,传递进去的第二个参数是一个实现了回调接口的匿名类对象。
在业务类中,我们调用了这个对象的onComputeEnd方法。在执行onComputeEnd的时候,jvm会找到这个对象的函数实现并调用。于是就输出了end back!!!