最近一直在研究java的回调机制……
看了别人的很多代码和文章的讲解都是一头雾水。现在终于搞明白了最基础的原理。这种东西用的地方也蛮多的。
一般最简单的就是三个类。
1.一个接口,里面声明方法。
public interface Iread(){
void read();//用来回调的方法
}
2.一个主要类,实现Iread接口,然后传给辅类
public class A implements Iread{
private B b = new B();
public A(){
b.setListener(this);//设置监听
}
@Override
public void read(){ //用来回调之后启动
doSomething();
}
void doSomething(){
printf("回调之后做一些事情。");
}
}
3.一个辅类
public class B{
private Iread iread;
public void setListener(Iread l){
iread = l;
}
public void back(){
iread.read();
}
}
以上三个类基本可以解释整个回调的完整过程。
Explain:
A类实现一个接口,然后把自己传给B类,B类执行某个方法( 例子中void back() )的时候,执行iread.read();
其实这里的iread就是A类中传来的(b.setListener(this);//设置监听),所以B类执行iread.read(),A类就会执行
如下方法:
@Override
public void read(){ //用来回调之后启动
doSomething();
}
然后整个回调过程结束。