使用stream初始化静态字段时遇到意外行为:
public class TestCompilation {
static final String message = "concatenation argument " + IntStream.range(0,42)
.mapToObj(i -> i+",")
.reduce((a, b)->a+b).get(); // StackOverflowError
public static void main(String[] args) {
System.out.println(message);
}
}
上面的代码会导致Error:java: java.lang.StackOverflowError
有人可以解释这种结果的原因吗?
javac 1.8.0_111用于编译java源代码