在 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 回答