11

在 Java 8 中,接口或抽象类定义返回CompletableFuture而不是返回的API 更好Future吗?考虑到转换为丑陋FutureCompletableFuture事实,并且这CompletableFuture将使调用者更灵活地直接使用函数式样式,那么 API 只返回的充分理由是Future什么?

4

2 回答 2

3

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

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

  • 这是protected abstract我想要扩展的内部部分的方法;
  • 我不需要接口来定义绑定;
  • 这个返回类型的主要目的是一个Future(用于异步IO),我个人觉得它提供的函数式APICompletableFuture是对未来开发者使用函数式风格的额外好处/提醒/鼓励。

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

于 2016-01-27T18:30:37.250 回答
2

我的 2 cts:

  • 通过返回 Future,您可以保持选项打开,并且可以返回 Future 或 CompletableFuture - 从调用者的角度来看,这没有区别。
  • 通过返回 CompletableFuture,您为调用者提供了更多选项(他们获得了更多方法),但您也承诺返回该类型的 Future - 如果两年后您意识到返回 BetterFuture 更有意义,您将不得不更改 API , 这不好。

因此,您可能应该评估您将来想要返回 CompletableFuture 以外的东西的可能性(哈哈)并做出相应的决定。

于 2016-01-21T18:17:57.253 回答