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
非常感谢,我将尝试使用此信息。如果你想到别的什么,我会很感激。 –