问题描述
我有以下代码:
@Test
public void testAverageFromArray() {
final Double[] dbls = { 1.1, 1.2, 1.3, 1.4, 1.5 };
final double av = Stream.of(dbls).mapToDouble(d -> d).average().getAsDouble();
assertEquals(1.3, av, 0);
}
问题:
是否可以替换 d - > d lambda还有其他一些语法?这似乎是不必要的。
Question:Is it possible to replace the d -> d lambda with some other syntax? It seems needless.
*我不确定这个问题的标题 - 如果它没有标记,请编辑。
*I wasnt sure about the title of this question - please edit if its off the mark.
谢谢
推荐答案
lambda d - > d
并非不必要。会发生什么是你需要提供一个函数 T - >双
。实际上 d - > d
是一个函数 Double - > double
因为取消装箱是自动完成的(自Java 5起)。
The lambda d -> d
is not needless. What happens is that you need to provide a function T -> double
. In fact d -> d
is a function Double -> double
because the unboxing is done automatically (since Java 5).
您总是可以用方法参考替换它.mapToDouble(Double :: doubleValue)
清楚地表明它为你正在处理的Double实例的double值取消装箱。
You could always replace it with a method reference .mapToDouble(Double::doubleValue)
to make it clear that it unboxes the double value for the Double instance you're processing.
这篇关于从Java8 lambda返回相同的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!