gpt4 book ai didi

java - 在 Java 中寻找 "consumer that returns value"抽象

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:51:10 26 4
gpt4 key购买 nike

在 Java 8+ 中是否有针对返回值的消费者的内置或强大的第三方抽象?

P.S. 对于延迟执行,它也可能返回 Future

更新。 功能 界面具有完美的句法匹配,但需要考虑语义。在这种情况下使用函数显然违反了不要改变外部状态的约定。怎么处理?

最佳答案

您可能正在寻找 Function<T, R> -界面。它是通用的,接受一个参数,同时返回一个值。它可以用于 lambda 表达式,例如映射:

Integer input = 1;
Function<Integer, Integer> myMapping = a -> a * 2;
Integer myInt = myMapping.apply(input);
// myInt == 2

看看 java util.function 包:https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html

有许多不同的预定义功能接口(interface)。 @FunctionalInterface是标记此类接口(interface)的注释,这些接口(interface)肯定只有一个非默认方法。此类接口(interface)可用于 lambda 表达式。

以下是一些最佳候选人:

  • 消费者:接受一个参数,返回 void。
  • 功能:接受一个参数,返回一个值。
  • 供应商:什么都不拿,返回一个值。
  • 谓词:接受一个参数并返回一个 boolean 值。

及其各种派生。

所有这些都可以存储为“值”,以便稍后执行。从某种意义上说,如果需要,它们可以成为回调。

编辑:因为 Function预计不会改变其执行的外部状态,某些 API 应用程序似乎很棘手。但是,如果您打算以这种方式使用函数,则可以定义一个参数类,它基本上是所有预期更改的值的包装器。如果其中任何一个在执行过程中发生变化,外部状态将根据这些变化进行更新。然而,这似乎更像是一种模式,而不是简单的单类/接口(interface)语言功能。我以前使用过参数类,甚至在使用 lambda 表达式之前使用过,如果正确描述了正确的 javadoc,它运行良好。

关于java - 在 Java 中寻找 "consumer that returns value"抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57267143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com