Java Lambda不解析类型

Java Lambda不解析类型,java,lambda,java-stream,Java,Lambda,Java Stream,我看到一个奇怪的问题,eclipse没有识别我的lambda参数 public static void main(String[] args) { int[] array = {23,43,56,97,32}; int sum1 = Arrays.asList(array).stream().reduce(0, (total, e) -> total + e).intValue(); } 我得到的total和e无法解析为变量。 我看到一些示例,其中使用“total”和“

我看到一个奇怪的问题,eclipse没有识别我的lambda参数

public static void main(String[] args) {
    int[] array = {23,43,56,97,32};
    int sum1 = Arrays.asList(array).stream().reduce(0, (total, e) -> total + e).intValue(); 
}
我得到的
total
e
无法解析为变量。
我看到一些示例,其中使用“total”和“e”作为参数,而不进行声明。
但是,在我的例子中,它拒绝编译而不声明。
这里的问题是什么

array.asList(array)
对于基元数组,返回一个
列表
,其单个元素是该数组

改变

Arrays.asList(array).stream()

注意:这将提供一个
IntStream
,而不是
Stream
,因此不需要在末尾提供
intValue()

int sum1 = Arrays.stream(array).reduce(0, (total, e) -> total + e);
对于
,您可以编写:

Arrays.stream(array).boxed()
整条线路将是:

int sum1 = Arrays.stream(array).boxed().reduce(0, (total, e) -> total + e).intValue ();
当然,您可以简单地通过以下方式获得总和:

int sum1 = Arrays.stream(array).sum ();
array.asList(array)
对于基元数组,返回一个
List
,其单个元素就是该数组

改变

Arrays.asList(array).stream()

注意:这将提供一个
IntStream
,而不是
Stream
,因此不需要在末尾提供
intValue()

int sum1 = Arrays.stream(array).reduce(0, (total, e) -> total + e);
对于
,您可以编写:

Arrays.stream(array).boxed()
整条线路将是:

int sum1 = Arrays.stream(array).boxed().reduce(0, (total, e) -> total + e).intValue ();
当然,您可以简单地通过以下方式获得总和:

int sum1 = Arrays.stream(array).sum ();
只需使用:

int[] array = {23,43,56,97,32};
int sum1 = Arrays.stream(array).reduce(0, (total, e) -> total + e);
我已将生成
stream
Arrays.asList(…).stream()
更改为
Arrays.stream(…)
(或
IntStream.of(…)

除此之外,您还可以将缩减简化为:

int sum1 = Arrays.stream(array).sum();
只需使用:

int[] array = {23,43,56,97,32};
int sum1 = Arrays.stream(array).reduce(0, (total, e) -> total + e);
我已将生成
stream
Arrays.asList(…).stream()
更改为
Arrays.stream(…)
(或
IntStream.of(…)

除此之外,您还可以将缩减简化为:

int sum1 = Arrays.stream(array).sum();