将 event/callback 绑定到 Java 中的关键字

Bind event/callback to keyword in Java

我是 Java 的新人,来自 javascript 背景。

在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 中的等效功能。有没有办法创建这种类型的自定义功能。

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

Java脚本是异步语言,Java是同步语言。您想要做的与询问相同 "How to I turn my hammer into a screwdriver?" 虽然仍然完全有可能通过创造力将锤子拧入某些东西,但这不是工具的预期用途,结果可能会有所不同。

回调在Java脚本中是必不可少的,让你的程序知道函数已经完成,Java知道函数已经完成,因为它停止执行它。

Java 为您提供事件侦听器,用于在您不太了解时可能看起来相似的事件;他们闲置直到他们正在听的任何东西激活他们,然后它激活,执行并返回收听。

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

如果您希望侦听器为另一种方法存储一些东西,带有 getter 和 setter 的 bean 将是一种 Java 方式。