从 Java8 lambda 返回相同的对象

rob*_*ins 5 lambda java-8

我有以下代码:

@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);
}
Run Code Online (Sandbox Code Playgroud)

问题:是否可以用其他语法替换d -> d lambda?看来没必要。

*我不确定这个问题的标题 - 如果不合时宜,请编辑。

谢谢

Ale*_* C. 4

lambdad -> d并不是没有必要的。发生的情况是您需要提供一个函数T -> double。事实上d -> d它是一个函数Double -> double,因为拆箱是自动完成的(从 Java 5 开始)。

您始终可以将其替换为方法引用,.mapToDouble(Double::doubleValue)以明确它为您正在处理的 Double 实例拆箱了 double 值。