Java 8 java lambdaj';变量名称';无法解析为变量错误

Java 8 java lambdaj';变量名称';无法解析为变量错误,java-8,java-stream,lambdaj,Java 8,Java Stream,Lambdaj,我不熟悉Java8的特性,这可能是一个愚蠢的问题,但我仍停留在这一点上 我试图在eclipse中运行以下代码,但它给出了编译时错误 import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.function.Predicate; import java.util.stream.Stream; import ch.lambdaj.Lambda; public c

我不熟悉Java8的特性,这可能是一个愚蠢的问题,但我仍停留在这一点上

我试图在eclipse中运行以下代码,但它给出了编译时错误

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Stream;
import ch.lambdaj.Lambda;

public class LambdajTest {

    public static void main(String[] args) {

        List list = new ArrayList();
        list.add(1);
        list.add(3);
        list.add(8);
        list.add(10);
        list.add(16);

        int sum = list.stream().filter(p -> p > 10).mapToInt(p -> p).sum();
    }

}
错误是:-p无法解析为变量。 我在类路径中添加了lambdaj 2.3.3 jar

请提供解决方案。
提前感谢。

问题是JVM不知道对象的类型,因为您使用的是原始集合

改变

List List=new ArrayList()

List List=new ArrayList()


JVM现在知道它在一组
Integer
对象上进行流处理。

您需要在lambda表达式中将p声明为int您的代码不需要LambdaJ。LambdaJ主要是一个库,它提供了很好的收集方法,面向Java<8。它与Java8Lambdas无关,比我想象的更有意义。