java lambdaj'variable_name'无法解析为变量错误

时间:2016-03-24 18:55:44

标签: java-8 java-stream lambdaj

我是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。

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

1 个答案:

答案 0 :(得分:4)

问题在于JVM在您使用原始集合时并不知道对象p是什么类型。

更改

List list = new ArrayList();

List<Integer> list = new ArrayList<>();

JVM现在知道它是通过Integer个对象集合进行流式处理的。