本文介绍了从Java8 lambda返回相同的对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码:

@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返回相同的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 15:36