精华内容
下载资源
问答
  • 2019-02-08 15:55:05

    日常开发中接口回调机制无处不在,刚开始用时却一直很模糊,今天就认真的了解一波

    我觉得一位大神博主(Bing_Hui )解释的很到位,博客传送们:https://blog.csdn.net/hbyh632/article/details/78592242

              在应用开发中,接口回调机制是一种常用的设计手段,也可以说是一种处理问题的模型,类之间,模块之间,都有一定的调用关系,一般来说,可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法,实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这个调用的过程称为接口的回调,是不是很晕乎,无奈,理论总是很抽象,后面我们会通过具体的实例来验证,看完实例大家可以再回来体会一下,看看是不是这个理,例如程序员 A 和 B 之间需要协作,A 告诉 B 这个任务中间的某个环节需要 B 来完成,并且完成后告诉 A,这时候程序员 A 就需要告诉 B 一个联系方式,使 B 完成时来通知自己,这个场景就可以使用回调,我下面就用老板吩咐工人干活,工人干完老板吩咐的活,回复老板的理解深入的了解下接口回调。

    1.首先定义回调接口

    package cn.breeziness.callback.test;
    
    /**
     * 老板要给工人分配任务,老板必须实现这个接口,工人通过这个“联系方式”联系到老板
     * Description:回调接口
     * Author: Breeziness
     */
    public interface CallBack {
        public void callMethod(String msg);
    }
    

    2.创建老板类,实现回调接口

    package cn.breeziness.callback.test;
    
    /**
     * Description:老板类,老板是回调接口的实现类
     * Author: Breeziness
     */
    public class Boss implements CallBack {
        Worker worker;//这里持有工人的引用便于调用工人提供的方法
    
        public Boss(Worker worker) {
            this.worker = worker;
    
        }
    
        //分配任务的方法
        public void bossToWorker(String event) {
            System.out.println("老板给工人分配任务");
            //调用工人提供的方法,分配任务,注册接口实现类实例
            worker.setCallback(this, event);
        }
    
        @Override
        public void callMethod(String msg) {
            //这里是回调方法,拿到工人的回复
            System.out.println(msg);
        }
    }
    

    3.工人类:

    package cn.breeziness.callback.test;
    
    /**工人类,当工人做完老板分配的任务就调用老板的回调方法
     * Description:
     * Author: Breeziness
     */
    public class Worker {
    
        //提供设置回调的方法
        public void setCallback(CallBack callback,String event){
            //工人拿到老板的任务,开始干活
            System.out.println("工人:老板要我做"+event);
            //调用老板的回调方法,回复老板
            callback.callMethod("工人:我做完老板吩咐的事情了");
        }
    }

    4.测试类

    package cn.breeziness.callback.test;
    
    /**
     * Description: 可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,
     *              那么该接口变量就可以调用被类实现的接口方法,
     *              实际上,当接口变量调用被类实现的接口中的方法时,
     *              就是通知相应的对象调用接口的方法,这个调用的过程称为接口的回调
     * Author: Breeziness
     */
    public class Test {
        public static void main(String[] args){
            Worker worker = new Worker();
            Boss boss = new Boss(worker);
            boss.bossToWorker("你去帮我打印点东西");
        }
    
    }

    到这里就很好的明白接口回调的使用了。

    更多相关内容
  • Java中接口回调

    2021-01-20 03:42:48
    接口回调是指:可以把使用某一个接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量可以调用被类实现的接口的方法。当接口变量调用被类实现的接口的方法时,是通知相应的对象调用接口的方法,...
  • Java中接口回调实例

    2020-08-26 09:36:37
    今天小编就为大家分享一篇关于Java中接口回调实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • Java接口回调机制

    2020-12-22 20:16:42
     近在看androidFragment与Activity进行数据传递的部分,看到了接口回调的内容,来总结一下。  二、回调的含义和用途  1、什么是回调?  一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为...
  • Java利用接口实现回调

    2021-01-20 03:49:26
    在Java支持方法指针之前,Java接口不能提供一种实现回调的好方法。如果您习惯于传递在事件驱动编程模型调用的函数指针,则您会喜欢本技巧。  熟悉MS-Windows和X Window System事件驱动编程模型的开发人员,习惯...
  • 比如说讯飞的语音识别,我们调用它的识别方法之后不是马上就可以得到识别的结果,需要经过一段时间(网络传输耗时),但是我们不会让程序傻逼地等待它的返回结果,而是让classA实现它定义的接口IntefaceC,当讯飞的...
  • 本文的主要内容是同过实际代码向大家展示Java编程中接口回调的一般用法,具有一定参考价值,需要的朋友可以了解下
  • Java接口回调一般用法

    2020-12-22 15:58:49
    Java接口回调一般用法:实现接口实际上和继承抽象类类似,只不过继承是在类的层面上操作,接口是在方法和常量集合的层面上操作,接口比抽象类更抽象、更简洁。可以把实现接口看成继承特定的一个或多个方法以及一些...
  • 主要介绍了java 接口回调实例详解的相关资料,所谓回调就是使用java中的多态,需要的朋友可以参考下
  • Java接口回调详解

    万次阅读 多人点赞 2018-08-29 16:15:33
    在现实生活,产生接口回调的场景很简单,比如我主动叫你帮我做一件事,然后你做完这件事之后会通知我,"通知我"这个动作就是接口回调的动作.接口回调重在理解思就好.再举个例子用于下面的代码演示,老师让...

    一.产生接口回调的场景

    在现实生活中,产生接口回调的场景很简单,比如我主动叫你帮我做一件事,然后你做完这件事之后会通知我,"通知我"这个动作就是接口回调的动作.接口回调重在理解思就好.再举个例子用于下面的代码演示,老师让学生做课堂练习,学生做完练习后并告诉老师.

    二.什么是接口回调

    在Java的层面简单的说一下接口回调:现有一个接口A,和它的实现类A1,和另外一个有接口A引用的类B,因为类B中有接口A的引用,在B执行完方法后,可以通过接口A的引用,告诉A执行完成了这个方法.由于A是一个接口,所以具体接收执行完成这个方法在它是实现类A1中体现.

    三.在代码中的使用

    以上面老师叫学生做课堂作业为例,我们先创建一个回调接口,以及用于接收学生做完课堂作业的消息

    public interface BackInterface {
    	void backMethod();
    	
    }

    然后定义一个实现类Teacher,功能是让学生做课堂练习,接收学生做完课堂练习的通知

    public class Teacher implements BackInterface {
    	
    	//因为老师要告诉学生做课堂练习,所以这个传一个学生的引用
    	private Student student;
    	
    	public Teacher(Student student){
    		this.student = student;
    	}
    	//老师告诉学生做课堂练习
    	public void doEvent(){
    		System.out.println("老师让学生做练习...");
    		student.doPractice(this);
    	}
    	//用于接收接口回调的消息
    	@Override
    	public void backMethod() {
    		System.out.println("老师接收到学生做完课堂练习的消息");
    	}
    
    }
    

    学生类,功能是做练习,做完之后并告诉老师(回调)

    public class Student {
    	
    	//学生做课堂练习,并告诉老师
    	public void doPractice(BackInterface BackInterface) {
    		System.out.println("学生做练习...");
    		System.out.println("学生告诉老师做完练习...");
    		BackInterface.backMethod();
    	}
    }
    

    进行测试:

    public class BackDemo {
    	public static void main(String[] args) {
    		Teacher teacher = new Teacher(new Student());
    		teacher.doEvent();
    	}
    }

    结果:

    我们可以看到回调完成.在实际开发过程中为了保证效率我们往往发布任务的时候会做成异步的,在本例中就是把 "老师让学生做课堂练习" 做成异步,具体实现很简单,就是新建一个线程就可以了,也就是把Teacher类中的 "student.doPractice(this);"代码改成下面的代码:

    new Thread(new Runnable() {
    			@Override
    			public void run() {
    			}
    		}).start();

    还有就是为了代码的简洁,我们常常把Teacher类写成匿名内部类的形式,代码就不演示了
    为了方便理解给几个参考地址:
    https://blog.csdn.net/bfboys/article/details/52640587
    https://blog.csdn.net/jonsnoww/article/details/68932292

    展开全文
  • java接口回调

    2017-03-23 00:18:43
    http://blog.csdn.net/IT_XF/article/details/65058367
  • Java同步回调函数

    2020-12-22 17:15:40
    1.概述  软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。  同步调用:一种阻塞式调用,调用方...  所谓回调,是客户程序CLIENT调用服务程序SERVER的某个函数
  • 主要介绍了浅谈Java中向上造型向下造型和接口回调中的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了Java接口回调机制,下面我们来一起学习一下吧
  • java实现--企业微信回调配置案例及工具代码
  • 理解Java接口回调

    千次阅读 多人点赞 2019-02-28 13:08:27
    2、创建一个回调对象实现回调接口。 3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用回调对象的某方法。 代码示例: 实例:...

    初步认识:

    实现步骤:

    1、创建一个回调接口。

    2、创建一个回调对象实现回调接口。

    3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用回调对象的某方法。

    代码示例:

    实例:Boss通知员工做事情,员工完成任务之后告诉Boss完成情况。

    说明:Callback:回调接口。Boss:回调对象。Employee:控制器对象。

    1、创建一个回调接口

    public interface Callback {
    	public void yes();
    	public void no();
    }

    2、创建一个回调对象实现回调接口 

    //  Boss需要实现回调的接口
    public class Boss implements Callback{
    //	传入一个员工对象
    	private Employee employee;
    	public Boss(Employee employee) {
    		this.employee = employee;
    	}
    	
    //	告诉员工要做什么事情
    	public void doEvent(String event) {
    		System.out.println("Boss:"+event);
    //      将当前对象传给员工,员工才可以回调
    		employee.doSomething(this, event);
    	}
    	
    //	员工完成事情后回调的方法
    	@Override
    	public void yes() {
    		System.out.println("Boss:任务完成得很不错,下个月给你涨工资");
    	}
    	@Override
    	public void no() {
    		System.out.println("Boss:任务没完成,好好反思一下");
    	}
    	
    }

     3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用回调对象的某方法

    public class Employee {
    	public Employee(){}
    
    //	完成boss交代的事情,回调接口作为参数穿过来
    	public void doSomething(Callback callback, String event) {
    		String flag=null;
    		System.out.println("Employee:正在做:"+event);
    		
    //		根据完成情况通知Boss,即接口回调
    		System.out.println("Employee:完成了任务!");
    		flag="完成";
    		if(flag.equals("完成")){
    			callback.yes();
    		}
    		
    		System.out.println("Employee:未完成任务!");
    		flag="未完成";
    		if(flag.equals("未完成")){
    			callback.no();
    		}
    		
    	}
    }

    4、测试:

    public class Test {
    	public static void main(String[] args) {
    		Employee employee=new Employee();
    		Boss boss = new Boss(employee);
    		boss.doEvent("写hello world!");
    	}
    }

    结果:

    展开全文
  • 4.应用接口回调在真实需求- a. recycler view 子item点击事件 b.网络请求接口回调 文章目录阅读本文,收获什么:阅读本文,收获什么:`对于搞懂的人来说很简单,对于没搞懂的同学别害怕,知识很简单,我会细细念给...

    越努力,越幸运! 梦想终会一步一步实现。

    阅读本文,收获什么:

    1.理解什么是接口回调
    2.解析点击事件(基于回调接口实现)
    3.模仿,应用点击事件
    4.应用接口回调在真实需求中- a. recycler view 子item点击事件 b.网络请求接口回调


    阅读本文,收获什么:

    1.理解什么是接口回调
    2.解析点击事件(基于回调接口实现)
    3.模仿,应用点击事件
    4.应用接口回调在真实需求中: a.自己来写点击事件响应; b. recycler view,子item点击事件; c.网络请求接口回调

    对于搞懂的人来说很简单,对于没搞懂的同学别害怕,知识很简单,我会细细念给你听,并大量举例说明,让你变成搞懂的那一波。


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、Java(Android)的接口回调是什么?

    1.套用正规说法

    接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。

    2.大话,举例翻译一下正规说法

    上面的看懂没??? 我当时也没看懂,but,我来换个自己理解的想法告诉你,并举例说明,你就入味了。
    它主要的思想就是把接口当成了对象,并把这个对象当成参数一样,在方法里面传递。还没明白?
    开始举例:
    先看一下我们的日常编程常规操作:
    假设有三个类,A,B,C

    class A{
    void Amethod(String msg){
     System.out.println(msg);
    	}
    }
    
        class B{
            A a;
            
            void Bmethod(String msg){
                a.Amethod(msg);
            }
            
            void setA(A a){
            	this.a=a;
            }
            
            //模拟一下android的点击事件,被点击就调用这个方法
    		public void onclicek(){
    		if(a!=null){
    		 	b.Bmethod(msg);
    		 	}
    		}
    
            
        }
    
    
     class C{
     		A a=new A();
      		B b=new B();
            public static void main(String[] args){
                b.setA(a);
            }
        }
    
    

    上面的代码看得懂吧,C->B->A
    C实例化B,和C,然后通过B的setA(A a )传递实例后的a,当有点击事情在b发生的时候,就会调用b…Bmethod(msg);方法,
    总之:C给了B一个实例后的a,B在被点击onclicek()后,调用的是C实例化的a。
    我们并没有在B里面实例化a.
    按道理,这时候谁实例化a都是一样的,确实是这样的,只是为了贴近接口回调讲解,我这样写,接着往下看,渐入佳境。

    我们按照把上面的说法,class A换成一个interface试试

    interface A{
    void Amethod(String msg);
    }
    

    这样的话,B.setA(A a)传递的就不是一个普通类对象了,而是一个接口对象,并且要考虑接口方法Amethod()重写。
    那么B类怎么写呢?

        class B{
            A a;
            void Bmethod(String msg){
                a.Amethod(msg);
            }
            void setA(A a){
            this.a=a;
            }
            
           //模拟一下android的点击事件,被点击就调用这个方法
    		public void onclicek(){
    		if(a!=null){
    		 	b.Bmethod(msg);
    		 	}
    		} 
        }
    
    

    what? B类和原来的一样???,是的,对于B来说,就是还是一样的啊
    理解理解,品品:接口当成类,实例化接口类成对象,然后在方法里面传递实例化后的对象。
    那这个接口的抽象方法重写呢?接着看, 这里需要说明的是:
    A在B里面当成类来用!!!
    B.Bmethod()只调用了 拿到的实例化后的a.amethod()方法。
    B.setA(A a)也只是把实例化后的a引用到B里面a;

    这里就引入一个点,为什么我们没有在B里面实例化A,就像下面这样写,这样写也更符合我们之前没使用接口回调,编写代码方式

    class B implements A{
      		@Override
            public void  Amethod(msg) {
                //重写方法
            }
            void Bmethod(String msg){
                Amethod(msg);
            }
            
           //模拟一下android的点击事件,被点击就调用这个方法
    		public void onclicek(){
    		 	Bmethod(msg);
    		} 
        }
    

    这样写代码更简洁,但是这就不是接口回调了啊,并且这只在A和B两个之间都完成了,我们还有很多类C,D,E…实例化B后,对于不同的业务,想使用A的Amethod(msg)不同重写方法,怎么办?
    这里我们换个思路,能不能C,D,E 来重写A的Amethod(msg)方法,并应用在B里面,就是说,我们C,D,E虽然重写了A方法,但是我们在用A的抽象方法的时候,还是想通过B来用,
    可以,A,B还是原来的写法:

    interface A{
    void Amethod(String msg);
    }
    
     class B{
            A a;
            void Bmethod(String msg){
                a.Amethod(msg);
            }
            void setA(A a){
            this.a=a;
            }
            
           //模拟一下android的点击事件,被点击就调用这个方法
    		public void onclicek(){
    		if(a!=null){
    		 	b.Bmethod(msg);
    		 	}
    		} 
        }
    

    用C,D,E来重写A,并且使用B的set(A a),将接口A实例化后的a传递给a .即接口回调了
    C就长这样:

        class C implements A{
         public static void main(String[] args){
                b.setA(this);
            } 
            
            @Override
            public void  Amethod(msg) {
                //重写方法
                 System.out.println(msg);
            }
    
        }
    

    或者:

        class C implements A{
         public static void main(String[] args){
                b.setA(new A(){
    				@Override
           			public void  Amethod(msg) {
                	//重写方法
                	 System.out.println(msg);
            		}
            	});
        }
    

    第一部分结束,没懂? 接着看

    2.button的点击事件

    button的点击事件就是基于接口回调,先看一下这篇博客:(只看button处理的部分就行)
    Android 自定义View——自定义点击事件

    回顾一下我们平时写button的写法:


    总结

    暂时弃坑,工作太忙。

    展开全文
  • 主要介绍了Java按时间梯度实现异步回调接口,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • Java接口回调

    千次阅读 2020-01-03 13:48:30
    回调的含义和用途 什么是回调? 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类:同步调用、异步调用和回调。同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的函数名来调用...
  • 本篇文章主要介绍了Java 是如何利用接口避免函数回调的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 微信支付-商户支付模式一url接口回调-java版,代码清晰,可直接运行
  • Java接口回调

    千次阅读 2019-01-11 12:44:53
    前言  回调是一种常见的程序设计模式,利用回调技术可以处理这样的问题,事件A发生时要执行处理事件A的代码,判断何时发生事件A及何时执行处理... Java中Swing与AWT的事件监听处理模型就是使用接口回调实现的...
  • Java 接口回调机制

    千次阅读 2017-05-26 21:05:32
    日常开发中接口回调机制无处不在,刚开开始用时却总是晕晕乎乎,网上也有很多相关的文章介绍,但总是没有看得太明白,今天特意花时间来总结一下 一、什么是接口回调 在应用开发接口回调机制是一种常用的设计...
  • java实现接口回调数据

    2017-09-05 08:45:47
    求教各位大神, 如何写接口给别人调用 。 最后保存别人返回的数据
  • Java通过JNI方式调用别人写的DLL,并涉及到DLL C代码回调Java程序,并传递二进制参数回来。业务:java控制摄像头,摄像头抓拍到图片后,传字节流给javaJava做存储
  • java中接口回调作用在哪里,看半天不知道到它有什么用,求大神仔细说下。
  • java中接口实现回调方法

    千次阅读 2017-12-25 02:55:35
    在学习过程,看Java源码时,经常出现一个词就是回调方法,网上查看别人解释,五花八门,看得人云里雾里,通过揣摩理解,在这里我来说一说我的理解。 一、回调方法概念 举例说明 图是这么个场景,类A实现...
  • Java 接口做参数,接口回调

    千次阅读 2020-07-05 15:53:33
    JAVA接口做参数,接口回调 接口做参数:将实现某接口的类的对象的引用用作参数传递给该接口参数。该接口通过回调来实现该接口方法。 接口回调:实现某接口的类的对象的引用,赋值给该接口声明的接口变量。 难以理解...
  • java接口回调实例

    千次阅读 2018-05-09 22:41:58
    Java Interface ——接口回调解析及实例通常的认知中java的接口就是用来定义一两个功能函数,其实现类来重写实现这些方法,今天给大家介绍一种很受欢迎且有很大益处的使用方法——接口回调...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 244,198
精华内容 97,679
关键字:

java中接口回调

java 订阅