有什么方法可以让事件在 Java 中带有变量?里面的例子
Is there any way to have events with a variable in Java? Example inside
比如说,我有一个包装 Queue 对象的 SystemQueue class。我使用 systemQueue.add(随便)添加到这个队列中,并且我有一个不同的对象,它是一个检查队列的 Runnable,如果它不为空,则从队列中取出并在其代码中使用 "whatever"。除了像
这样的 运行 中有一个无限循环之外,还有什么办法可以做到这一点
run(){
while(true){
if(!systemQueue.isEmpty()){
todo
}
}
}
并永远运行?
我要问的是,如何在 java?
中使用基于事件的编码进行编码
有什么方法可以将 eventListener 添加到 SystemQueue 中的队列中,如果队列发生变化,调用 SystemExecutor 并让它 运行?
Queue
本身不提供该选项。不过,您可以实现自己的 listener/event 对。
事件:
public class SystemEvent extends java.util.EventObject{
public SystemEvent(SystemQueue src){
super(src);
}
public SystemQueue getSource(){
return (SystemQueue) super.getSource();
}
}
听众:
public interface SystemListener extends java.util.EventListener{
public void eventQueued(SystemEvent e);
}
在系统队列中:
ArrayList<SystemListener> listeners = new ArrayList<>();
protected void fireEventQueued(){
SystemEvent e = new SystemEvent(this);
listeners.forEach(l -> l.eventQueued(e));
}
public void addSystemListener(SystemListener l){
listeners.add(l);
}
public void add(something){
//add something
fireEventQueued();
}
现在您需要做的就是让 SystemExecutor 实现 SystemListener
并将实例添加为侦听器。
比如说,我有一个包装 Queue 对象的 SystemQueue class。我使用 systemQueue.add(随便)添加到这个队列中,并且我有一个不同的对象,它是一个检查队列的 Runnable,如果它不为空,则从队列中取出并在其代码中使用 "whatever"。除了像
这样的 运行 中有一个无限循环之外,还有什么办法可以做到这一点 run(){
while(true){
if(!systemQueue.isEmpty()){
todo
}
}
}
并永远运行? 我要问的是,如何在 java?
中使用基于事件的编码进行编码有什么方法可以将 eventListener 添加到 SystemQueue 中的队列中,如果队列发生变化,调用 SystemExecutor 并让它 运行?
Queue
本身不提供该选项。不过,您可以实现自己的 listener/event 对。
事件:
public class SystemEvent extends java.util.EventObject{
public SystemEvent(SystemQueue src){
super(src);
}
public SystemQueue getSource(){
return (SystemQueue) super.getSource();
}
}
听众:
public interface SystemListener extends java.util.EventListener{
public void eventQueued(SystemEvent e);
}
在系统队列中:
ArrayList<SystemListener> listeners = new ArrayList<>();
protected void fireEventQueued(){
SystemEvent e = new SystemEvent(this);
listeners.forEach(l -> l.eventQueued(e));
}
public void addSystemListener(SystemListener l){
listeners.add(l);
}
public void add(something){
//add something
fireEventQueued();
}
现在您需要做的就是让 SystemExecutor 实现 SystemListener
并将实例添加为侦听器。