在学习的过程过,多次见到回调接口的时候,有时候觉得自己会了,当要自己马上写一个回调的实际例子出来还是感到挺吃力的,所以在此写一篇博客,记录一下自己对回调的理解,免得自己忘了的时候没有参考。
1.首先简单的介绍一下什么事回调方法吧,在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。
在摘抄一篇来自别人博客对回调的理解:所谓的回调,就是程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。
2.那个在java语言里面实现回调的方法比较常见的就是通过接口实现了。下面就是详细的步骤了:
1.既然是接口回调,第一件事当然是新建一个接口啊,并且在接口里面定义抽象方法
public interface 接口 {
public void 实际运行代码();
}
2.接口类定义好后,我们就可以具体实现接口里面的具体内容了,于是我们新建一个接口主体类,用于实现我们接口里面抽象方法的具体逻辑。
public class 接口主体 implements 接口{
@Override
public void 实际运行代码() {
// TODO Auto-generated method stub
System.out.println("我是实际运行的代码");
}
}
3.第三步是很关键的,我们需要一个中介,去调用在接口里面定义的方法,于是我们新建一个接口的帮助类,用于充当我们调用者和被调用者之间的桥梁。
public class 接口帮助类 {
private 接口 mInterface;
public void 设置接口(接口 mInterface){
this.mInterface = mInterface;
}
public void 运行接口里面的逻辑代码(){
mInterface.实际运行代码();
}
}
4.最后我们就可以在测试主类里面对我们的回调函数进行测试了
public class 测试主类 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
接口帮助类 help = new 接口帮助类();
help.设置接口(new 接口主体());
help.运行接口里面的逻辑代码();
}
}
上述的代码运行的结果是:
我是实际运行的代码
5.当然我们更加偏向于用匿名内部类的方法实现接口的回调
</pre><p><pre name="code" class="html">public class TestMain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
接口帮助类 aTest = new 接口帮助类();
aTest.设置接口(new 接口() {
@Override
public void 实际运行代码() {
System.out.println("这是Test类里面添加的逻辑代码");
}
});
aTest.运行接口里面的逻辑代码();
}
}
运行的结果是 输出
这是Test类里面添加的逻辑代码
也许这个例子能让你更好的理解接口在实际中的用途吧:</pre><pre code_snippet_id="1656899" snippet_file_name="blog_20160421_9_1905219" name="code" class="html">public class Test {
private static 接口帮助类 aTest;
public static void main(String[] args) {
// TODO Auto-generated method stub
if(infacte()){
aTest.运行接口里面的逻辑代码();
}
}
private static boolean infacte(){
aTest = new 接口帮助类();
aTest.设置接口(new 接口() {
@Override
public void 实际运行代码() {
// TODO Auto-generated method stub
System.out.println("test");
}
});
return true;
}
}
运行的接口就是输出 Test
。。。以上就是我个人对回调函数一点小小的总结,用于以后忘时可以有一个可以参考的东西。最后说一句,以上的代码只是方便理解,并不推荐这个代码面名风格.