在 .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/