Java 8 : Function (Expression) which only returns a value and does not accept any argument

标签 java

在 .Net Frameworks 中,我们有 Func<out TResult>它可能会也可能不会接受任何参数,但会返回一些东西。具体来说,使用它时我们可以这样做:

int funcTest (Func<int> arg){ return arg();}
-->
int i = funcTest(()=>{return 1;})

这是Function在 Java 中总是需要一个输入参数( Function<T,R> )。在某些情况下,我们需要类似于我在问题开头解释的 .Net 示例的表达式。尽管可以通过将 null、零、真/假或任何其他虚拟值作为参数传递给表达式来处理这些情况,但这绝对不是处理此类情况的标准且明智的解决方案。

我搜索了java.util.function库,我发现该命名空间中的大多数表达式类型都需要输入参数,因此我决定发布这个问题,看看 java 标准库中是否提供了类似于 Func<Result> 的表达式。在.Net中。

最佳答案

界面java.util.function.Supplier就是您正在寻找的:一个不带参数并返回值的函数。

int funcTest(Supplier<Integer> arg) {
    return arg.get();
}

int i = funcTest(() -> 1);

还有专门的供应商要避免auto-(un)boxing ,例如IntSupplier:

int funcTest(IntSupplier arg) {
    return arg.get();
}

int i = funcTest(() -> 1);

如果您使用此功能,则不必将 int 装箱到 Integer 或从 Integer 拆箱。

关于Java 8 : Function (Expression) which only returns a value and does not accept any argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29846726/

相关文章:

java - Eclipse 报告 JSP 文件中的语法错误,但应用程序运行正常

java - 嵌套递归错误

java - 关于应用程序实例管理的问题

java - 如何在java中一次查找并替换一个出现的单词?

java - 如何在 android 流式套接字连接上获得超时异常?

java - HtmlUnit 没有并行运行所有 HTTP 请求?

java - 在运行 elasticsearch 集群时获取 Perm Gen 空间问题

java - Z3 将 FuncInterp 设为 Null

Java 锦标赛支架

java - 简单的一行,Java中的原生加密/解密方法