【发布时间】:2019-07-30 08:13:54
【问题描述】:
在 Java 8+ 中是否存在用于返回值的消费者的内置或健壮的第三方抽象?
P.S. 对于延迟执行,它也可能返回 Future。
Update. Function 接口具有完美的句法匹配,但需要考虑语义。在这种情况下使用 Function 显然会破坏 don't change external state 的约定。怎么处理?
【问题讨论】:
-
你的意思是一个函数?
-
您可以使用
Function来使用其参数并返回您需要的任何值。 -
对于延迟版本,这将是
Function<T, CompletableFuture<R>>。然后,您可以将这些东西组合/链接在一起。如果一个特定的实现实际上不需要延迟,它可以返回一个已经完成的未来和结果。 -
Java 类型系统中没有任何东西可以阻止代码“改变外部状态”。您必须自己查看 Function 实现及其文档。我想你可以找到一个“效果系统”(比如 Scala ZIO),但这些在 Javaland 中非常奇特(甚至它们也不能真正强制执行功能纯度)。
标签: java producer-consumer abstraction functional-interface