请问任何人请用java中的一些示例解释什么是回调方法?

时间:2010-07-07 11:45:04

标签: java

任何人都可以用java中的一些示例来解释什么是回调方法?

3 个答案:

答案 0 :(得分:3)

回调通常是指一种面向事件的方法,其中监听器向特定类注册,并在事件发生时被回调。例如,事件可以对应于用户按下密钥或通过TCP接收的一些数据。

在下面的例子中,我假设存在一个名为EventListener的侦听器接口。 EventListener已注册“可观察”EventStream类(请注意,为清晰起见,我省略了addListenerremoveListener方法。一旦启动,事件流就会创建一个单独的线程来处理接收事件和回调每个侦听器的工作。我使用了一个单独的线程来说明一个回调方法可以被一个用于注册监听器的线程调用。

public class EventStream {
  private final List<EventListener> listeners = new CopyOnWriteArrayList<EventListener>();

  public void start() {
    // Create thread responsible for performing I/O, creating and
    // broadcasting Event objects to any registered listeners.
    Thread t = new Thread(...);
    t.start();
  }

  // Notification method.  Called by internal event stream thread.
  protected void fireEventReceived(Event e) {
    for (EventListener l : listeners) {
      l.eventReceived(e);
    }
  }
}

答案 1 :(得分:3)

我通过google搜索“callback java”找到了这个:

http://www.javaworld.com/javaworld/javatips/jw-javatip10.html

如果你自己开始使用谷歌,你通常可以得到更快的答案。

答案 2 :(得分:2)

回调或上调是调用者在更高层中调用方法。特别是在程序编程中,我们通常认为更高层调用更低层。应用程序代码调用库代码,以及更精细的分层。回调通过引用传递给下层的方法来反转ralhiphip。

在Java中,这通常通过实现接口来实现,因为该语言(还)没有单独的方法引用的概念 - 它是具有运行时类的所有对象。通常这些将作为匿名内部类实现。另一方面,它可能是外部类,可能还有其他一些配置,例如servlet和applet。

回调可以是异步的所有异步。在单层执行较低层方法期间会回调同步回调,例如在Execute Around Idiom中。它们可能会在AWT / Swing事件(相同的线程)中回调,或者说java.util.concurrent.ExecutorService(不同的线程)。