簡體   English   中英

有什么辦法可以在Java中使用變量來進行事件? 內部例子

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM