简单理解回调
标签(空格分隔): java
虽然以前也是看过很多回调方面的例子,甚至是跟着步骤把代码写了一遍,然而后面遇到了回调方法还是理解不到,运用不来。
纸上得来终觉浅,觉知此事要躬行
于是找到以前看过的博文,不看代码。看文字描述自己弄了一下,应该算是大彻大悟了。这篇博文是百度回调的第一篇。致谢。
一个经典的例子让你彻彻底底的理解java回调机制
我觉得关键是实现过程:
- 背景一:类A要实现一个接口,这个接口中的方法就是回调方法
- 背景二:类A持有类B的一个引用(反正类A中要出现类B的对象)
- 背景三:类B中要有一个以接口为参数的方法
- 大结局:在A类或者在任何想要实现回调的场景中使用B的对象调用B中以接口为参数的方法,这个参数就传入A的对象的实例,于是就可以在这个方法中使用A的对象来调用A中的方法(大结局有点混乱)
情景模拟: 我是一个老师类的对象,于是我就是千万个老师之一,这里的老师类就是类A。老师有很多的学生,于是就再创建一个学生类。我让学生去交学费,交了就通知我(交学费只是简单的一种,还有其他很多种耗时的操作)。好的,新建一个学生对象。但是交完钱怎么通知我尼,我留下一个联系方式,就是老师类都有一个联系方式,实现了一个接口。而学生就得有通讯工具,那就是以老师类接口为参数的一个方法。当然在使用的时候要传入我的引用。
A.java
public class A implements Callback {
private B b;
public A(B b) {
// TODO Auto-generated constructor stub
this.b = b;
}
public void g() {
// TODO Auto-generated method stub
System.out.println("I kown!");
}
public static void main(String[] args) {
A a = new A(new B());
a.b.f(a);
}
}
B.java
public class B {
void f(Callback callback) {
callback.g();
}
}
Callback.java
public interface Callback {
void g();
}
博主还说到安卓中的button的点击回调:确实是经典