将 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 方式。
我是 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 方式。