精华内容
下载资源
问答
  • 5分钟理解java回调方法

    千次阅读 2018-04-18 05:25:16
    看到一个场景使用了java回调方法,遂提起兴趣花了时间去了解回调的大概过程。 试着大概想象以下3过程, 1,老师向学生提了一个问题 2,学生花费时间去思考 3,然后学生向老师回答问题。 以上的三个过程 过程...

    看到一个场景使用了java回调方法,遂提起兴趣花了时间去了解回调的大概过程。

    试着大概想象以下3过程,
    1,老师向学生提了一个问题
    2,学生花费时间去思考
    3,然后学生向老师回答问题。
    以上的三个过程

    过程1,老师向学生提问:

    public class TestCallBack {
        public static void main (String[] args) {
            Student student = new Student();
            Teacher teacher = new Teacher(student);
            System.out.println("main方法中:老师向学生提问");
            teacher.askQuestion();
        }
    }
    

    过程2,学生需要时间去思考:Student类

    public class Student{
        public void resolveQuestion(Teacher teacher) {
            try {
                System.out.println("Student对象里:学生在思考问题中,需要时间6秒);
                Thread.sleep(6000);
            } catch (InterruptedException e) {}
            teacher.tellAnswer("这是在Student类中给老师的回答");
        }
    }
    

    过程3,学生把回答呈递给老师:Teacher类

    public class Teacher{
        private Student student;
        public Teacher (Student student) {
            this.student = student;
        }
        public void askQuestion () {
            student.resolveQuestion(this);
        }
        public void tellAnswer(String str) {
            System.out.println("Teacher对象里: " + str);
        }
    }
    

    可以运行main,输出为:

    main方法中:老师向学生提问

    Student对象里:学生在思考问题中,需要时间6秒

    Teacher对象里: 这是在Student类中给老师的回答


    想要理解回调,必须抓住一点,站在单线程的角度去思考

    1,在main方法里,new出了一个student与一个teacher对象,然后调用teacher对象的askQuestion方法;

    2,teacher对象的askQuestion方法又调用了student对象的resolveQuestion方法;

    3, 在student对象里完成了resolveQuestion后,回调了teacher对象里的tellAnswer方法;

    上述过程3,完成了最重要的一步回调。
    把整个流程再简单显示:

    teacher.askQuestion->student.resolveQuestion->teacher.tellAnser

    就是执行从A类到B类又回到A类的过程。

    以上是本人对java回调的理解,希望对大家有帮助!

    展开全文
  • 主要介绍了 Java 回调机制(CallBack) 详解及实例代码的相关资料,需要的朋友可以参考下
  • 主要介绍了Java多线程回调方法实例解析,具有一定参考价值,需要的朋友可以了解下。
  • 一个实现回调方式的示例,简单来说回调方法的函数参数是接口,是方法
  • java android 回调 三种方法 例子
  • Java回调方法

    万次阅读 2011-07-11 17:35:43
    回调方法是把功能定义和功能实现分离的一种手段,是一种松耦合的设计思想。 Android中的控件响应就是利用了回调方法。话不多说,直接上代码。 回调方法的接口: public interface ICallBack { // 回调方法 ...

     回调方法是把功能定义和功能实现分离的一种手段,是一种松耦合的设计思想。

    Android中的控件响应就是利用了回调方法。话不多说,直接上代码。

    回调方法的接口:

    public interface ICallBack {
    	// 回调方法
    	public void callBackMethod();
    }

    回调方法的实现类(监听类):

    /**
     * 监听类
     * @author zuolongsnail
     */
    public class CallBackListener implements ICallBack {
    
    	@Override
    	public void callBackMethod() {
    		System.out.println("回调");
    	}
    }

    回调方法的调用类:

    /**
     * 调用类
     * @author zuolongsnail
     */
    public class Caller {
    
    	private ICallBack callBack;
    	
    	public void setCallBack(ICallBack callBack){
    		this.callBack = callBack;
    	}
    	public void call(){
    		this.callBack.callBackMethod();
    	}
    }

    业务处理类:

    /**
     * 业务处理类
     * @author zuolongsnail
     */
    public class Main {
    
    	public static void main(String[] args) {
    		Caller caller = new Caller();
    		caller.setCallBack(new CallBackListener());
    		// 在业务处理的时候调用
    		caller.call();
    	}
    }



    熟悉Android中Button点击事件处理的同学应该都知道跟上面是一样的。
    ICallBack------->OnClickListener接口
    CallBackListener--------->实现OnClickListener接口的类
    Caller-------->Button对象
    Main-------->业务处理类(Activity)




     

    展开全文
  • Java回调函数实现案例

    千次阅读 2020-04-02 09:15:31
    1、什么是回调函数 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来... 回调方法 是 任何一个 被 以该回调方法为其第一个参数 的 其它方法 调用 ...

    1、什么是回调函数

            回调函数,是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。在Java中,指针即所谓的引用。回调函数不是由该函数的实现方直接调用,而是在特定的事件条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

            回调方法 是 任何一个 被 以该回调方法为其第一个参数 的 其它方法 调用 的方法。很多时候,回调是一个当某些事件发生时被调用的方法。

    2、应用场景

    事件驱动机制

    举例:甲雇佣乙修车;然后甲就去做其他事情;乙完成后通知甲:车已修好,请来取。即甲没必要一直等待乙修完车。

    3、代码示例

    1、测试类

    package com.callBack;
    public class CallBckTest {
    
        public static void main(String[] args) {
            MainBusiness mainBusiness = new MainBusiness();
    
            System.out.println("*********具体实现类实现的回调方法_固定*********");
            mainBusiness.execute(new CallbackServiceImpl());
    
            System.out.println("*********匿名内部类实现的回调方法_灵活*********");
            mainBusiness.execute(new CallbackService() {
                public void callBackFunc() {
                    System.out.println("匿名内部类回调函数开始执行...");
                    System.out.println("匿名内部类回调函数结束执行...\n");
                }
            });
        }
    }
    

    2、业务类与方法 

    package com.callBack;
    public class MainBusiness {
    
        private CallbackService callback;
    
        public void execute(CallbackService callback) {
            this.callback = callback;
            callBack();
        }
    
        public void callBack() {
            callback.callBackFunc();
        }
    }

    3、回调函数接口 

    package com.callBack;
    //回调函数之接口与方法
    public interface CallbackService {
        void callBackFunc();
    }
    

    4、回调函数实现类

    package com.callBack;
    public class CallbackServiceImpl implements CallbackService {
        @Override
        public void callBackFunc() {
            System.out.println("具体实现类回调函数开始执行...");
            System.out.println("具体实现类回调函数结束执行...\n");
        }
    }
    

    5、打印结果

    *********具体实现类实现的回调方法_固定*********
    具体实现类回调函数开始执行...
    具体实现类回调函数结束执行...
    
    *********匿名内部类实现的回调方法_灵活*********
    匿名内部类回调函数开始执行...
    匿名内部类回调函数结束执行...

     

     

    展开全文
  • C回调java几种方法

    2017-06-11 23:46:28
    C回调java方法的几种用法
  • java自定义回调函数

    2015-04-05 23:43:35
    java自定义回调函数代码,SDK开发.对后续编写自己的SDK有帮助!
  • Java回调-由浅入深(保证简单易懂)

    万次阅读 多人点赞 2018-05-04 20:10:41
    前几天公司面试有问道java回调的问题,因为这方面也没有太多研究,所以回答的含糊不清,这回特意来补习一下。看了看网上的回调解释和例子,都那么的绕口,得看半天才能绕回来,其实吧,回调是个很简单的机制。在这里...

    转载请注意文章出处:https://blog.csdn.net/fengye454545/article/details/80198446

    有一段时间没写博客了,可能是因为懒了吧。前几天公司面试有问道java回调的问题,因为这方面也没有太多研究,所以回答的含糊不清,这回特意来补习一下。看了看网上的回调解释和例子,都那么的绕口,得看半天才能绕回来,其实吧,回调是个很简单的机制。在这里我用简单的语言先来解释一下:假设有两个类,分别是A和B,在A中有一个方法a(),B中有一个方法b();在A里面调用B中的方法b(),而方法b()中调用了方法a(),这样子就同时实现了b()和a()两个方法的功能。

    疑惑:为啥这么麻烦,我直接在类A中的B.b()方法下调用a()方法就行了呗。
    解答:回调更像是一个约定,就是如果我调用了b()方法,那么就必须要回调,而不需要显示调用

    一、Java的回调-浅

    我们用例子来解释:小明和小李相约一起去吃早饭,但是小李起的有点晚要先洗漱,等小李洗漱完成后,通知小明再一起去吃饭。小明就是类A,小李就是类B。一起去吃饭这个事件就是方法a(),小李去洗漱就是方法b()。

    public class XiaoMing {	
       //小明和小李一起吃饭
       public void eatFood() {
          XiaoLi xl = new XiaoLi();
          //A调用B的方法
          xl.washFace();
       }
    
       public void eat() {
          System.out.print("小明和小李一起去吃大龙虾");
       }
    }

    那么怎么让小李洗漱完后在通知小明一起去吃饭呢

    public class XiaoMing {	
       //小明和小李一起吃饭
       public void eatFood() {
          XiaoLi xl = new XiaoLi();
          //A调用B的方法
          xl.washFace();
          eat();
       }
    
       public void eat() {
          System.out.print("小明和小李一起去吃大龙虾");
       }
    }

    不过上面已经说过了这个不是回调函数,所以不能这样子,正确的方式如下

    public class XiaoLi{//小李
       public void washFace() {
    	System.out.print("小李要洗漱");
    	XiaoMing xm = new XiaoMing();
            //B调用A的方法
    	xm.eat();//洗漱完后,一起去吃饭
       }
    }

    这样子就可以实现washFace()同时也能实现eat()。小李洗漱完后,再通知小明一起去吃饭,这就是回调。

    二、Java的回调-中

    可是细心的伙伴可能会发现,小李的代码完全写死了,这样子的场合可能适用和小明一起去吃饭,可是假如小李洗漱完不吃饭了,想和小王上网去,这样子就不适用了。其实上面是伪代码,仅仅是帮助大家理解的,真正情况下是需要利用接口来设置回调的。现在我们继续用小明和小李去吃饭的例子来讲讲接口是如何使用的。

    小明和小李相约一起去吃早饭,但是小李起的有点晚要先洗漱,等小李洗漱完成后,通知小明再一起去吃饭。小明就是类A,小李就是类B。不同的是我们新建一个吃饭的接口EatRice,接口中有个抽象方法eat()。在小明中调用这个接口,并实现eat();小李声明这个接口对象,并且调用这个接口的抽象方法。这里可能有点绕口,不过没关系,看看例子就很清楚了。

    EatRice接口:

    public interface EatRice {
       public void eat(String food);
    }

    小明:

    public class XiaoMing implements EatRice{//小明
    	
       //小明和小李一起吃饭
       public void eatFood() {
    	XiaoLi xl = new XiaoLi();
    	//A调用B的方法
    	xl.washFace("大龙虾", this);//this指的是小明这个类实现的EatRice接口
       }
    
       @Override
       public void eat(String food) {
    	// TODO Auto-generated method stub
    	System.out.println("小明和小李一起去吃" + food);
       }
    }

    小李:

    public class XiaoLi{//小李
       public void washFace(String food,EatRice er) {
    	System.out.println("小李要洗漱");
            //B调用了A的方法
    	er.eat(food);
       }
    }

    测试Demo:

    public class demo {
       public static void main(String args[]) {
    	XiaoMing xm = new XiaoMing();
    	xm.eatFood();
       }
    }

    测试结果:

    这样子就通过接口的形式实现了软编码。通过接口的形式我可以实现小李洗漱完后,和小王一起去上网。代码如下

    public class XiaoWang implements EatRice{//小王
    	
       //小王和小李一起去上网
       public void eatFood() {
    	XiaoLi xl = new XiaoLi();
    	//A调用B的方法
    	xl.washFace("轻舞飞扬上网", this);
       }
    
       @Override
       public void eat(String bar) {
    	// TODO Auto-generated method stub
    	System.out.println("小王和小李一起去" + bar);
       }
    }

    测试结果:

    三、Java的回调-深

    上面讲的都是同步回调,可是事实上,小李要洗漱后才能吃饭,在小李洗漱的时候,小明是要做自己的事情的,比如他在玩手机,这样子就是异步回调了。而且我们把代码正规化,比如在android点击事件中,你会发现你只要实现View.setOnclickListener(this),即可实现回调,那么像这样子的规范是如何实现的,在这一节里我将会提到。废话少说,先上代码。

    EatRice接口没有变化,这里就省去接口代码展示

    小明:

    public class XiaoMing implements EatRice{
       //小明和小李一起吃饭
       public void eatFood() {
    	XiaoLi xl = new XiaoLi();
    	//A调用B的方法
    	xl.setEatRiceListener(this, "大龙虾");
       }
    
       @Override
       public void eat(String food) {
    	// TODO Auto-generated method stub
    	System.out.print("小明和小李一起去吃" + food);
       }
    }

    小李:

    public class XiaoLi{//小李
    	
       protected EatRice er;
    	
       public void setEatRiceListener(EatRice er, String food) {
    	this.er = er;
    	washFace(food);
       }
    	
       public void washFace(String food) {
    		
    	System.out.print("小李要洗漱");
    		
    	new Thread(new Runnable() {
    			
    		@Override
    		public void run() {
    			// TODO Auto-generated method stub
    			try {
    			    //小李洗漱的同时小明玩手机,开启线程实现异步
    			    play();
    					
    			    Thread.sleep(10000);
    			    System.out.print("10秒后 ");
    			    //B调用A的方法
    			    er.eat(food);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    		                e.printStackTrace();
    			}
    		}
    	}).start();
       }
    	
       //小明玩手机
       public void play() {
    	System.out.println(" 小明要玩手机");
       }
    }

    测试结果:

    首先先打印出 "小李要洗漱 小明要玩手机",过了10秒后打印出“10秒后 小明和小李一起去吃大龙虾”。看到这里相信你对Java的回调有了新的认识吧。


    菜鸟一只,如有不对之处请指出。您的鼓励是我写作的最大动力!

    展开全文
  • kotlin lambda (kotlin回调和java回调)

    千次阅读 2020-03-21 16:39:13
    kotlin回调和java回调kotlin回调和java回调的对比kotlin的回调java的回调 kotlin回调和java回调的对比 废话不多说,人狠话不多,直接撸代码: kotlin的回调 class A{ fun setListeren(canshu1:Int,mListen: (String...
  • Java通过JNI方式调用别人写的DLL,并涉及到DLL C代码回调Java程序,并传递二进制参数回来。业务:java控制摄像头,摄像头抓拍到图片后,传字节流给javaJava做存储
  • 对于回调方法,没有参考官方的解释。参考了网络上的一些解释,觉得大概是指这个一个意思:首先,要有两个程序A、B或者两个类A、B。其中,假设A程序为了方便B程序调用自身的资源,从而预留了一个方法 C,这个方法 C ...
  • jni编程c回调java方法
  • 我们在编程的时候经常会遇到一些这样的问题,比如说讯飞的语音识别,我们调用它的识别方法之后不是马上就可以得到识别的结果,需要经过一段时间(网络传输耗时),但是我们不会让程序傻逼地等待它的返回结果,而是让...
  • java回调方法

    千次阅读 2018-04-23 16:10:33
    回调方法栗子: 经理出差前要你去办一件事情,这件事情通过doSomething告诉你了,事情要是办完了就通过phoneCall通知她一声 这里的phoneCall我们就称之为回调方法 满足回调的2个基本条件: 1.ClassA 调用 ClassB...
  • 深入理解Java回调函数

    万次阅读 多人点赞 2016-04-03 01:17:49
    C语言中回调函数解释: 回调函数(Callback Function)是怎样一种函数呢? 函数是用来被调用的,我们调用函数的方法有两种: 1 直接调用:在函数A的函数体里通过书写函数B的函数名来调用之,使内存中对应函数B的...
  • java中如何实现"回调函数

    千次阅读 2019-05-13 20:41:53
    最近工作需要研究了一会别人写的库,其中充满着各种"回调函数",因此把自己理解给记录下来,存档。 首先我们来看看回调函数这个概念的具体由来,百度百科的示义如下: 回调函数就是一个通过函数指针调用的函数。...
  • 背景: 想写一个工具类 Tool.java ,其中方法 public void readOneLine() 负责一行一行地读文件,然后根据不同的业务,对每一行进行不同处理。最后输出到文件 out
  • Java回调机制是什么意思?

    千次阅读 2017-09-25 09:16:47
    所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法。百度百科中对Java回调机制是这样解释的: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们...
  • java多线程回调方法的理解

    万次阅读 2016-09-12 13:07:42
    java多线程使用回调方法的一个例子,可以加深对java多线程的回调方法的理解
  • java回调函数的作用以及运用

    千次阅读 2016-05-24 14:47:45
    模块之间总是存在这一定的接口,从调用方式上看,可以分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,也是我们在写程序中经常使用的;回调是一种双向的调用模式,也就是说,被调用的接口被调用时也...
  • Java回调实现

    千次阅读 2019-07-31 11:27:07
    1.什么是回调 2.回调核心思想 3.案例代码实现 4.后序一、什么是回调 开发过程当中存在某种特殊的业务需求,例如: 描述: 1.老板给员工下达了工作任务之后,就去做其他事情了。(此时此刻,老板不知道需要多长时间...
  • Java回调~mqtt回调处理中的问题

    万次阅读 热门讨论 2016-08-01 11:19:12
    1. java回调机制 回调方法的理解: 例子:  消防员给出一个电话号码119(这是每个人都知道的,119就相当于Java中的一个接口),并在每一个地方都设置一个发生火灾时的检测装置,如果危急到人们的人生安全时,...
  • 在JavaScript中,将函数作为参数传入另一个函数执行的回调函数很常见。例如,一个简单的循环数组的函数,定义如下: function loopArray(arr, callback) { for (var i = 0; i < arr.length; i++) { ...
  • JAVA同步回调函数

    千次阅读 2016-01-06 11:29:27
    软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。  同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;  回调:一种双向调用...
  • java回调】同步/异步回调机制的原理和使用方法 回调(callback)在我们做工程过程中经常会使用到,今天想整理一下回调的原理和使用方法。 回调的原理可以简单理解为:A发送消息给B,B处理完后告诉A...
  • Java接口回调详解

    万次阅读 多人点赞 2018-08-29 16:15:33
    一.产生接口回调的场景 在现实生活中,产生接口回调的场景很简单,比如我主动叫你帮我做一件事,然后你做完这...在Java的层面简单的说一下接口回调:现有一个接口A,和它的实现类A1,和另外一个有接口A引用的类B,因为类B...
  • Java的设计模式中有回调这个机制,在Android开发中我们也会经常用到回调机制。下面就通过一些小例子来说明什么是回调。   假如我们要实现这个这样一个功能。 MainActivity中由一个Fragment和一个ViewPager构成,...
  • C++中回调Java方法

    千次阅读 2019-05-28 07:49:59
    Java调用C++代码的完美方法 JNI是Java与C++之间的桥梁,它们之间的层次关系如下图所示:...五、C++中回调Java方法(完美) 上述的回调是在一个线程栈中完成的,不能称为正真的回调。在后续学习实践中发现: JNI...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 389,617
精华内容 155,846
关键字:

java回调方法

java 订阅