在 Java 8 中,接口或抽象类定义返回CompletableFuture
而不是返回的API 更好Future
吗?考虑到转换为丑陋Future
的CompletableFuture
事实,并且这CompletableFuture
将使调用者更灵活地直接使用函数式样式,那么 API 只返回的充分理由是Future
什么?
问问题
2504 次
2 回答
3
以为我会回到这个并提供一些关于我最终决定的更新:
对于我自己的代码/设计,我选择使用CompletableFuture
作为返回类型,因为
- 这是
protected abstract
我想要扩展的内部部分的方法; - 我不需要接口来定义绑定;
- 这个返回类型的主要目的是一个Future(用于异步IO),我个人觉得它提供的函数式API
CompletableFuture
是对未来开发者使用函数式风格的额外好处/提醒/鼓励。
CompletableStage
话虽如此,如果我一直在设计公共 API,我肯定会使用接口作为返回类型,因为:
- @assylias 和 @Holger 对接口与实现和链接能力的看法
CompletableStage
并且有方法的事实CompletableFuture<T> toCompletableFuture()
。
于 2016-01-27T18:30:37.250 回答
2
我的 2 cts:
- 通过返回 Future,您可以保持选项打开,并且可以返回 Future 或 CompletableFuture - 从调用者的角度来看,这没有区别。
- 通过返回 CompletableFuture,您为调用者提供了更多选项(他们获得了更多方法),但您也承诺返回该类型的 Future - 如果两年后您意识到返回 BetterFuture 更有意义,您将不得不更改 API , 这不好。
因此,您可能应该评估您将来想要返回 CompletableFuture 以外的东西的可能性(哈哈)并做出相应的决定。
于 2016-01-21T18:17:57.253 回答