java回调终结贴
——我一直不太信任自己的记忆力,所以我把它们都写下来
写程序不明白回调的难听点说真的都没有入门,事件驱动的基本上都是回调实现,比如Android中按钮点击,Swing中的按钮点击,回调运用的地方真的太多了,必须得拿下。可是回调就是那么绕,一时让人摸不着头脑。下面两个例子一定会让你明白回调。
第一个例子我们以android点击按钮为例
Button.class
/**
* 这是一个按钮
* @author albert
*
*/
public class Button {
//点击按钮
public void click(ClickListener listenner){
listenner.onClick();
}
}
点击事件接口,供Button的click事件使用
/**
* 模拟事件处理,具体点击后的算法给实现者
* @author albert
*
*/
interface ClickListener{
public void onClick();
}
下面是在一个Activity上点击按钮的具体处理
/**
* 模拟android中的界面(里面可以添加Button等)
* @author albert
*
*/
public class Activity {
public static void main(String[] args) {
Button btn = new Button();
btn.click(new ClickListener() {
@Override
public void onClick() {
System.out.println("这里具体实现点击后要执行的算法");
}
});
}
}
运行Activity后控制台打印一段文字。不知道这个大家有没有看明白,这个是具体的实际操作过程,我们再抽象下。
public class A {
public void func(CallBack callBack){
callBack.call();
}
}
/**回调接口*/
interface CallBack{
public void call();
}
具体的实现类B
public class B {
public static void main(String[] args) {
A a = new A();
a.func(new CallBack() {
@Override
public void call() {
System.out.println("这里具体实现点击后要执行的算法");
}
});
}
}
上面两个例子应该很好理解了吧,然后B类可以改良下
public class B implements CallBack{
public static void main(String[] args) {
B b = new B();
A a = new A();
a.func(b);
}
@Override
public void call() {
System.out.println("让B实现callback接口");
}
}