引言![c3a4fe1841c942c18b6bd410797e1726.png](https://i-blog.csdnimg.cn/blog_migrate/c358c8562fe83589c81912bc75970aad.png)
可能对于像我一样初次接触项目技术的各位而言,回调感觉在很多地方都听说过,但是感觉有时能够理解,有时候又不能理解。这里刚好为大家实例演示一个Java代码实现的简单的例子。
准备工作
首先为了实现一个像样的回调,我们需要在目标对象的内部定义一个内部接口(有点类似Java中的内部类(其实本质也算))
创建对应的接口类型引用指向(人话就是:定义你刚才创建的一个接口数据类型 下面的第一个成员)
设定好对应的set方法
public class Student {
private ClickListener clickListener;
private String name;
private int age;
public Student(String name,int age)
{
this.name = name;
this.age = age;
}
interface ClickListener {
void click(int k);
}
public void setClickListener(ClickListener clickListener) {
this.clickListener = clickListener;
}
//触发回调
public void imitate(int pos)
{
System.out.println("模拟触发回调逻辑");
clickListener.click(pos);
}
}
创建调用的实例
(一定记住最后观察的时候站在main函数执行的角度去调试观察!!!!)
public class MainTest {
public static void main(String[] args) {
Student s = new Student("gaozi",20);
s.setClickListener(k -> System.out.println("我拿到对应的k了,k是:"+k));
s.imitate(5);//触发回调
}
}
完整的执行逻辑截图(这里省略了对象的实例化)
1.回调的真实逻辑在对象外部被创建
2.对接至对象内部(实例被传递至对象内部)
3.开始执行回调(对象内部开始寻找方法实现体)
4.实现回调(于是从对象内,找到对象外部,相较主函数而言,程序发生了所谓的"回退"(回调))
相信看了上述小栗子后大家对于回调有了更多的认识。 如果有更为详细理解的朋友欢迎评论区留下您的高见。