2015-06-29 26 views
4

我是来自JavaScript背景的Java新手。在Java中绑定事件/回调到关键字

在JavaScript中,我们可以在对象保存回调像这 -

//we register some callback on a keyword 
    var observerCallbacks = {}; 
    registerObserverCallback = function(eventname ,callback){ 
       observerCallbacks[eventname] = callback; 
      }; 
//For calling events 
    notifyObservers = function(eventname){   
     observerCallbacks[eventname]();        
      }; 

用法:

//Register event 
     registerObserverCallback('eventA',function(){ 
      //body of callback 
    }); 

//For calling event 
notifyObservers('eventA'); 

我要寻找一个在相当于Java功能。有没有办法创建这种类型的自定义功能。

回答

3

Java为此具有略微不同的机制。对象将自身注册为特定类型事件的侦听器发生此类事件时,将通知所有侦听器。

Here你可以找到一个关于它的教程。下面的代码是从那里。

public class MultiListener ... implements ActionListener { 
    ... 
    //where initialization occurs: 
     button1.addActionListener(this); 
     button2.addActionListener(this); 

     button2.addActionListener(new Eavesdropper(bottomTextArea)); 
    } 

    public void actionPerformed(ActionEvent e) { 
     topTextArea.append(e.getActionCommand() + newline); 
    } 
} 

class Eavesdropper implements ActionListener { 
    ... 
    public void actionPerformed(ActionEvent e) { 
     myTextArea.append(e.getActionCommand() + newline); 
    } 
} 

更多关于这个话题可以发现here

1

JavaScript是一种异步的语言,Java是一个同步的语言。你想要做什么就像问“如何把我的锤子变成螺丝刀?”一样。虽然创造力仍然完全有可能使锤头具有某种功能,但并非如何使用该工具,结果可能会有所不同。

为了让程序知道函数已经完成,JavaScript中的回调函数是必不可少的,Java知道函数完成后就停止执行了。

Java为您提供了事件监听器,当您不知道更好时,事件可能看起来类似;他们闲置,直到他们正在收听的任何东西激活他们,然后激活,执行并返回到收听状态。

这样做的Java方法是告诉你的听众做任何你想让它做的事情;你不会停下来等待回调,因为Java会停止,执行你告诉的内容,然后回到它来自的地方。如何为侦听器编写代码可以找到in the oracle tutorial,但是您的问题更多的是逻辑问题而不是特定的代码。

如果您希望侦听器为另一种方法存储某些内容,则具有getter和setter的bean将是一种Java方式。