在定义API时我应该返回CompletableFuture还是Future?

时间:2016-01-21 17:50:48

标签: java interface java-8 future completable-future

在Java 8中,接口或抽象类更好地定义返回CompletableFuture而不是返回Future的API?考虑it is ugly converting Future to CompletableFuture以及CompletableFuture将为调用者提供直接使用函数样式的更大灵活性的事实,API返回Future的原因是什么?

2 个答案:

答案 0 :(得分:2)

我的2 cts:

  • 通过返回Future,您可以保持选项打开并返回Future或CompletableFuture - 它与调用者的观点没有区别。
  • 通过返回CompletableFuture,你给调用者更多选项(他们获得更多方法)但你也承诺返回那种类型的Future - 如果在两年内你意识到返回BetterFuture会更有意义,你将不得不改变API,这不好。

所以你应该评估一下你将来会想要返回一个不同于CompletableFuture的东西的可能性(哈哈)并做出相应的决定。

答案 1 :(得分:1)

我想我会回到这里并提供一些关于我最终决定的更新:

对于我自己的代码/设计,我使用CompletableFuture作为返回类型,因为

  • 这是我想要扩展的内部部件的protected abstract方法;
  • 我不需要界面来定义绑定;
  • 此返回类型的主要目的是Future(对于异步IO),我个人认为CompletableFuture提供的功能样式API是对未来开发人员使用功能样式的额外好处/提醒/鼓励

话虽如此,我肯定会使用CompletableStage接口作为返回类型,因为我设计了一个公共API,因为: