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

在Java 8中,接口或抽象类更好地定义返回CompletableFuture而不是返回Future API? 考虑到它很难将Future转化为CompletableFuture ,而且CompletableFuture会给调用者更直接的使用功能风格的灵活性,API可以返回Future原因是什么?


我的2 cts:

  • 通过返回一个未来,你可以保持你的选择开放,并可以返回一个未来,或一个CompletableFuture - 从调用者的角度来看没有什么不同。
  • 通过返回一个CompletableFuture,你给调用者更多的选择(他们获得更多的方法),但你也承诺返回这种类型的未来 - 如果在两年内你意识到返回BetterFuture会更有意义,你将不得不改变API ,这并不好。
  • 所以你应该评估你将来想要返回除CompletableFuture以外的东西的可能性(哈哈)并相应地做出决定。


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

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

  • 这是我想要扩展的内部部分的protected abstract方法;
  • 我不需要一个接口来定义绑定;
  • 这种返回类型的主要目的是Future(对于异步IO),我个人认为CompletableFuture提供的功能样式的API是将功能样式用于未来开发者的附加益处/提醒/鼓励。
  • 据说,如果我设计了一个公共API,我肯定会使用CompletableStage接口作为返回类型,因为:

  • @assylias和@Holger对接口与实现和链接能力所说的话
  • 以及CompletableStage有一个方法CompletableFuture<T> toCompletableFuture()的事实。
  • 链接地址: http://www.djcxy.com/p/89877.html

    上一篇: Should I return CompletableFuture or Future when defining API?

    下一篇: Why do I have to use the reference operator (&) in a function call?