小编slo*_*kps的帖子

Java 8流 - stackoverflow异常

运行以下代码示例以:
"线程中的异常"main"java.lang.StackOverflowError"结束

import java.util.stream.IntStream;
import java.util.stream.Stream;

public class TestStream {

    public static void main(String[] args) {
        Stream<String> reducedStream = IntStream.range(0, 15000)
            .mapToObj(Abc::new)
            .reduce(
                Stream.of("Test")
                , (str , abc) -> abc.process(str)
                , (a , b) -> {throw new IllegalStateException();}
        );
        System.out.println(reducedStream.findFirst().get());
    }

    private static class Abc { 
        public Abc(int id) {
        }

        public Stream<String> process(Stream<String> batch) {
            return batch.map(this::doNothing);
        }

        private String doNothing(String test) {
            return test;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

究竟是什么导致了这个问题?这段代码的哪一部分是递归的,为什么?

java reduce java-8 java-stream

11
推荐指数
1
解决办法
1432
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1

reduce ×1