在做学校项目的时候做一个app,其中需要自定义回调函数,可自己对这方面可谓是一知半解,于是乎,赶紧到网上去查找相关的资料,以及其他人对回调函数的个人见解。花了一上午时间,终于明白了稍许,对于回调函数,我也有了一些自己的看法,在这里分享给大家(第一次写博客,有诸多问题再多难免,但我定会尽我所能,让大家有所收获。 所谓回调,在我现在看来,就是对于抽象类或者接口中的抽象方法进行重写,这时当要调用抽象类或者接口中的方法时,代码就会在遵循一定的机制的前提下,调用重写的方法。在查资料的过程中,我遇到了以下两种方式,待我一一道来。
一、子类继承抽象类或者接口,重写其中的方法,用子类对象对父类对象进行赋值,代码如下:
public interface MyCallInterface
{
public void method();
}
public class Caller
{
public MyCallInterface mc;
public void setCallfuc(MyCallInterface mc)
{
this.mc= mc;
}
public void call(){
this.mc.method();
}
}
public class B implements MyCallInterface
{
public void method()
{
System.out.println("回调");
}
public static void main(String args[])
{
Caller call = new Caller();
call.setCallfuc(new B());
call.call();
}
}
二、使用匿名类对抽象类或者接口中的抽象方法进行重写,代码如下:
package com.listener;
/**
* 点击监听器接口
* @author jason0539
*
*/
public interface MyOnClickListener {
public void onClick();
}
package com.listener;
public class MyButton {
private MyOnClickListener listener;
/**
* 设置具体点击监听器
* @param listener 点击监听器实现类
*/
public void setOnClickListener(MyOnClickListener listener) {
this.listener = listener;
}
/**
* 按钮被点击
*/
public void doClick() {
listener.onClick();
}
}
package com.listener;
publicclass Client {
public static void main(String[] args) {
MyButton button =new MyButton();
//注册监听器
button.setOnClickListener(new MyOnClickListener() {
@Override
public void onClick() {
System.out.println("按钮被点击了");
}
});
//模拟用户点击
button.doClick();
}
}
以上就是我对回调的总结啦
,希望对大家有所帮助~
参考博文:http://blog.csdn.net/jason0539/article/details/10168899
http://blog.csdn.net/fengyifei11228/article/details/5729445