title中提到的特性提供了一個簡單的目的:允許用戶將一些事件監聽器綁定到一個對象,該對象將在發生事件時分派所有事件監聽器。Java是否具有提升或Qt信號的等價性?
這個簡單的概念可以,當然,取得這樣的:
public class EventEmitter extends ArrayList<Runnable>;
但我希望能有一個更聰明的發射器 - 最好一個允許參數傳遞給回調。 Runnable當然沒有任何參數。 Lambda表達式在另一側具有參數。
智能發射器允許您定義特定回調參數:這個東西
EventEmitter<String, Boolean> emitter = new EventEmitter();
我的問題是Java庫的一部分,或者如果我要實現它自己。在谷歌上,我只找到了一些java.awt.AWTEvent
但這不是事件調度程序。
我首選的僞代碼:
// Requires lambdas with (File, int) signature
public final EventEmitter<File, int> downloadCompleteEvent;
並追加了新事件爲:
downloaderClass.downloadCompleteEvent
.addListener(
(File file, int downloadTime)->System.out.println("Downloaded "+file.getAbsolutePath()+" in "+downloadTime+" seconds.")
);
和調度事件:
this.downloadCompleteEvent.dispatch(downloadedFile, elapsedTime);
我假設'CompletableFuture'僅供一次使用。 –
您可以在一個可完成的將來添加多個偵聽器/回調,也可以鏈接進程,但是您需要爲每次執行創建一個新的未來,是 – Prim
非常感謝,我將嘗試使用此信息。如果你想到別的什麼,我會很感激。 –