Java 8 java lambdaj';变量名称';无法解析为变量错误
我不熟悉Java8的特性,这可能是一个愚蠢的问题,但我仍停留在这一点上 我试图在eclipse中运行以下代码,但它给出了编译时错误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
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无关,比我想象的更有意义。