Android —JAVA接口回调机制解析

很多人都搞不懂什么是JAVA的接口回调,我在写这篇文章的前两天也搞不懂,找了好多资料,好多例子,但是依然很容易搞混了,最后,自己琢磨着画了张图,才渐渐明了了起来。不多说,先上图
这是我自己画的关于接口回调的运行机制,可能大家会没那么容易看懂
这里写图片描述
但是不要紧,其中最关键的就是懂得一句话:所谓回调,就是让别的类来调用自己类的一个方法,这个方法就是“回调方法”。那么,我们就要搞明白一件事,如何让别的类调用自己类方法呢?在这里,采用的是接口作为中间的媒介(其实很多人认为,回调就只能用接口,其实不是的,回调只是一种机制,但是并不一点采用接口,至于为什么采用接口,只是为了程序的解耦,提高代码的复用性。纯属个人理解,不喜勿喷)。
接下来讲讲如何采用接口作为中间媒介实现回调机制的。
在业务实现中,我们经常发现有这样一个需求,举个Android中的例子:比如我们需要向一个输入框EditText填充一个字符串(功能A),但是这个填充是需要等到用户执行了某个其他操作才动态填充的(不确定填充时间,不确定填充内容),这个时候,我们就要知道什么时候用户执行了这个操作,然后调用填充字符串这个方法。这个时候我们就可以采用回调来实现(当然不同的业务场景也可以有不同的实现方法)
下面,我们就通过这个例子+代码来分析回调的机制的执行过程
首先,先创建一个中间媒介——接口

public interface  CallBack {
    public void OnCallBack(String str);
}
   然后创建一个模拟EditText的类并继承接口CallBack,实现OnCallBack()方法
/*
 * 这是模拟EditText填充的类
 */
public class EditText implements CallBack{

    public void OnCallBack(String str) {
        // TODO Auto-generated method stub
        setEdiText(str);
    }
    public void setEdiText(String s){
        System.out.println("拿到数据"+s+",开始填充EditText...");
    }
    public void demand(){
        System.out.println("我需要填充EditText");
    }
}
   然后创建一个模拟用户操作的类,此类执行用户操作,执行完毕后调用callBack方法,此时就产生了回调。
/*
 * 这是一个模拟用户操作的类。
 */
public class User_Do {
    CallBack call ;//创建接口引用,
    /*
    *创建一个方法,用于动态绑定接口,可为不同的继承了接口的类进行绑定即传说中的注册回调接口。
    */
    public void setCallBack (CallBack call){
        this.call=call;
    }
    public void Do(){
        System.out.println("用户正在执行操作..");
        call.OnCallBack("123");//执行完操作,回调方法给EditText,填充数据为123
    }
}
    接下来是测试类
    /*
 * 这是一个测试类
 */
public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        EditText et = new EditText();//创建一个EditText类。
        et.demand();//声明需求

        User_Do ud = new User_Do();
        ud.setCallBack(et);//注册回调接口,绑定EditText。
        ud.Do();//用户执行操作,执行完毕后,回调接口方法给EditText填充
    }
}

最后运行结果如图所示

反正大家记住一句话,回调回调,就是让别人来调用自己的方法,这个方法利用接口来实现就是接口中抽象的方法。
最后,用一副图总结一下:
这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值