我想把一个简单的Java函数转换成一个不带任何参数的lambda 8函数,然后调用它:
public int getMissing() {
return 0;
}如何将上面的代码转换为java8 lambda格式?
发布于 2017-08-16 12:09:59
您的情况与Java8中的Supplier类似
Supplier<Integer> supplier = () -> 0;
System.out.println(supplier.get());发布于 2017-08-16 14:15:14
实际上,您并没有直接将方法转换为lambdas。Lambda或多或少是动态创建的函数接口的实现,没有传统匿名内部函数方法的开销。
因此,如果您希望将其作为lambda传递,则需要找到一个匹配的函数接口,并为其分配一个lambda。
在本例中,您有一个不带参数的方法,它返回一个int,其中一个可能的选择是使用IntSupplier
IntSupplier supplier = () -> 0;现在,您可以通过执行以下操作调用它:
supplier.getAsInt()如果要返回装箱的Integer,则需要使用通用Supplier<T>
Supplier<Integer> supplier = () -> 0;
supplier.get(); // 0发布于 2017-08-16 12:08:55
不清楚您打算如何处理该值,但生成器的形式为() -> Int -类似于,
IntStream.generate(() -> 0).limit(1).forEach(System.out::println);如果你省略了limit(1),那么你将得到一个无限多的零,如果你需要保持顺序,使用forEachOrdered (而不是forEach)。
https://stackoverflow.com/questions/45704937
复制相似问题