[英]Is there any way to have events with a variable in Java? Example inside
說,我有一個包裝隊列對象的SystemQueue類。 我使用systemQueue.add(whatever)添加到此隊列中,並且有一個不同的對象,那就是Runnable,它檢查隊列,如果不為空,則從隊列中取出並在其代碼中使用“ whatever”。 除了在運行中有無限循環外,還有什么方法可以做到這一點
run(){
while(true){
if(!systemQueue.isEmpty()){
todo
}
}
}
並永遠運行嗎? 我要問的是,如何在Java中使用基於事件的編碼進行編碼?
有什么方法可以將eventListener添加到SystemQueue內部的隊列中,如果隊列發生更改,請調出SystemExecutor並使其運行?
Queue
本身不提供該選項。 但是,您可以實現自己的偵聽器/事件對。
事件:
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);
}
在SystemQueue中:
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
並將實例添加為偵聽器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.