2
我发现下面流想法。当我尝试分配的int流#减少操作,但是当整体出现内部Java编译器错误 - 不
的怪异行为让研究下面的代码:
int summaryAge = Person.getPersons().stream()
.parallel() //will return surprising result
.reduce(0, (intermediateResult, p) -> intermediateResult + p.age,
(ir1, ir2) -> ir1 + ir2);
理念没有按”牛逼强调任何错误,但是当我运行应用程序,我看到下面的编译错误:
Error:java: Compilation failed: internal java compiler error
但是当我更换使用Integer
这样的:
Integer summaryAge = Person.getPersons().stream()
.parallel() //will return surprising result
.reduce(0, (intermediateResult, p) -> intermediateResult + p.age,
(ir1, ir2) -> ir1 + ir2);
它工作正常。
型号:
public class Person {
String name;
Integer age;
///...
public static Collection<Person> getPersons() {
List<Person> persons = new ArrayList<>();
persons.add(new Person("Vasya", 12));
persons.add(new Person("Petya", 32));
persons.add(new Person("Serj", 10));
persons.add(new Person("Onotole", 18));
return persons;
}
}
它的想法或编译器的错误吗?
你的代码第一个片段编译为我好(运行的javac 1.8.0_51与Maven) – Tunaki
@Tunaki我用的想法。 http://dl2.joxi.net/drive/0005/3037/338909/151001/b29bd185b8.jpg – gstackoverflow
看起来像我们使用相同版本的jdk – gstackoverflow