Java 什么是回调

2024-05-15

1. Java 什么是回调

所谓回调,就是客户程序Client调用服务程序Service中的某个方法A,然后Service又在某个时候反过来调用Client中的某个方法B,对于Client来说,这个B便叫做回调函数

回调实现的步骤1、定义回调接口和回调方法 2、Client实现回调接口和回调方法,并在Client中包含Service引用,通过引用调用Servie中的方法并且必须传入一个当前对象Client(因为当前对象实现了CallBack接口所以也属于接口对象) 3、在Service中定义一个接口对象并在方法中对初始化(将Client传过来的当前对象赋值给接口对象),通过接口对象调用接口中方法(调用的Client实现的接口方法) 4、测试

Java 什么是回调

2. 怎样理解java中的回调函数

 程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。目的达到。在C/C++中,要用回调函数,被掉函数需要告诉调用者自己的指针地址,但在JAVA中没有指针,怎么办?我们可以通过接口(interface)来实现定义回调函数。
 假设我是程序员A,以下是我的程序a:
  [java] view plaincopyprint?
  public class Caller
  {
  public MyCallInterface mc;
  
  public void setCallfuc(MyCallInterface mc)
  {
  this.mc= mc;
  }
  
  public void call(){
  this.mc.method();
  }
  }
  还需要定义一个接口,以便程序员B根据我的定义编写程序实现接口。

  public interface MyCallInterface
  {
  public void method();
  
  }
  于是,程序员B只需要实现这个接口就能达到回调的目的了:
  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();
  }
  }

3. java中怎样定义回调函数

  程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。目的达到。在C/C++中,要用回调函数,被掉函数需要告诉调用者自己的指针地址,但在JAVA中没有指针,怎么办?我们可以通过接口(interface)来实现定义回调函数。
 假设我是程序员A,以下是我的程序a:
  [java] view plaincopyprint?
  public class Caller
  {
  public MyCallInterface mc;
  
  public void setCallfuc(MyCallInterface mc)
  {
  this.mc= mc;
  }
  
  public void call(){
  this.mc.method();
  }
  }
  还需要定义一个接口,以便程序员B根据我的定义编写程序实现接口。

  public interface MyCallInterface
  {
  public void method();
  
  }
  于是,程序员B只需要实现这个接口就能达到回调的目的了:
  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();
  }
  }

java中怎样定义回调函数

4. JAVA回调机制

你理解的基本对,这是一种回调机制的情况。方法中传递的接口实现上就是一个监听器Listener的接口,调用方法时,传具体的接口实现的实例, 也可以事先就传入(通常是叫 注册监听器)。这种情况常见于Java Swing编程中的事件机制。

软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。

同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;

回 调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;

异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。

异步调用实现是回调的一种情况,比如方法可以提前返回,具体的逻辑执行可以在另外一个线程中,执行完成后,由这个线程来回调,负责通知调用方。

5. java 回调函数或回调接口是一样的吗?他们的定义分别是什么?他们各自在什么场景下使用?

所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。Web Service以及Java的RMI都用到回调机制,可以访问远程服务器程序。
同在一个系统里面的时候可以不使用回调接口,因为知道如何回调。一般来说都是回调接口的,因为接口告诉你如何回调,但是如果你已经知道如何回调的时候,可以不实用接口。

java 回调函数或回调接口是一样的吗?他们的定义分别是什么?他们各自在什么场景下使用?

6. java里面,c里面都有回调函数,回调函数都是什么东西啊???

嗯,的确都有回调函数,但是C与java中的回调实现的方法不太一样
C中的回调函数,是由指针实现的,将某个函数方法的地址赋给某个指针变量,然后直接由这个变量去调用方法。可以通过一个指针实现不同方法的调用。
java中,没有指针这一概念。所以回调函数的意义似乎也不太一样,感觉跟C比起来更像是团队开发的一种手段和方法。java中的回调是通过接口实现的,调用函数不用知道被调用的函数是如何实现的,只需要写好一个被调函数的接口声明,然后根据接口调用。至于被调用函数,只需要重载接口方法就可以让调用函数去调用...说白了就是,一个人只负责去写大的程序流程,细节的方法部分不需要写,只要留好接口声明,然后让别的人去写这个接口的重载就可以了。更适合于团队开发以及程序更新优化。
好吧我快给我自己说晕了
给你两个例子去看下,这俩写的还都比较清楚
java的:http://blog.csdn.net/allen_zhao_2012/article/details/8056665
C的:http://www.cnblogs.com/chenyuming507950417/archive/2012/01/02/2310114.html

7. 在java中回调函数怎么理解,android中的回调函数和java中有区别吗?

可以理解为一种逻辑的延伸。例如在java中已onXXX开头的方法。
这些方法通常是一种信息的延伸。预示着某些事件发生了。这些信息通常是某些大逻辑的一部分。而其他部分不需要开发者考虑。
比如onCreate方法,了解了生命周期就会知道他是整个activity第一个执行的代码。那么他究竟是谁调用的。这个一般不需要考虑。只需要了解系统在调用即可。 而这个方法在执行的时候。需要你去补充这个方法的实现。 所以相当于你完成了事件的余下部分。
 
比如早晨需要在闹铃响之后起床。那么你可以设置一个timer来记时或者是一个线程来跑。当发现到的时候。需要把这个事件抛出去。至于谁来处理。这不是闹铃考虑的范围。他的作用就是触发事件.至于处理。那么需要处理这个事件的。可以用很多方法来建立关联的句柄。
比如。通过接口的实现。继承。或者像android里的广播。
 
回调函数描述的是一种模式。这个和语言或平台无关。所以android中和java中是一样的。C++中也有。

在java中回调函数怎么理解,android中的回调函数和java中有区别吗?