我读过很多关于如何在Java8中轻松定义一个lambda的例子。
Function<Integer,Integer> f1 = (x) -> Math.pow(x,2);
当然,您可以像f2
一样扩展主体:
Function<Integer,Integer> f2 = (x) -> {if (x < 0) return 0;
else return Math.pow(x,2);};
但是我找不到一种方法来定义一个像f3
这样具有可变数量参数的lambda
Function<Integer,Integer,Integer> f3 = (x,y) -> {return x + y};
或者不带像f4
这样的参数
Function<Double> f4 = () -> {return Math.random()};
我几乎肯定你可以定义自己的函数接口(例如,通常创建一个新文件)来开发f3
和f4
,但是有什么方法可以轻松地定义它们吗?
发布于 2018-08-10 03:48:26
带有两个参数的函数称为BiFunction
BiFunction<Integer, Integer, Integer> f3 = (x, y) -> x + y;
不带参数的函数称为Supplier
Supplier<Double> f4 = () -> Math.random();
或者等效地:
Supplier<Double> f4 = Math::random;
https://stackoverflow.com/questions/51774742
复制相似问题