我是Java 8新功能的新手,这可能是一个愚蠢的问题,但我现在陷入困境。
我试图在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无法解析为变量。 我在classpath中添加了lambdaj 2.3.3 jar。
请提供解决方案。 提前谢谢。
答案 0 :(得分:4)
问题在于JVM在您使用原始集合时并不知道对象p
是什么类型。
更改
List list = new ArrayList();
到
List<Integer> list = new ArrayList<>();
JVM现在知道它是通过Integer
个对象集合进行流式处理的。