如何完成CompletableFuture <Void>?

Xin*_*hao 14 java completable-future

我想要一个仅表示完成的CompletableFuture(例如,我没有返回值).

我可以将CompletableFuture实例化为:

CompletableFuture<Void> future = new CompletableFuture<> ();
Run Code Online (Sandbox Code Playgroud)

但是我应该为完整的方法提供什么?例如,我做不到

future.complete(new Void());
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 16

正如您所注意到的,您无法实例化Void此类对象.由于您不关心未来的价值,您可以通过以下方式完成null:

future.complete(null);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这有效。但这是不是说根本没有办法实例化Void呢?如果你调用 future.get() 会发生什么?在这种情况下,我会得到一个 null 而不是我假设的 Void ? (2认同)
  • @Xinchao 是的,你会得到一个“null”。引用 [`Void` 的 javadoc](https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html):“Void 类是 **一个不可实例化的占位符* * class 来保存对代表 Java 关键字 void 的 Class 对象的引用。” (2认同)