为什么在Java8 Stream的map函数中抛出异常时会出现“Cyclic reference”?

时间:2015-05-20 21:15:52

标签: functional-programming java-8

基本上,以下代码不会通过编译器,因为x -> Optional.of(x).orElseThrow(() -> new Exception("")部分标记为循环引用。有人能告诉我为什么有循环引用?什么是解决方法?

Arrays.asList("a", "b").stream().map(x -> Optional.of(x).orElseThrow(() -> new Exception("")));

2 个答案:

答案 0 :(得分:1)

想出来:map内部的函数不能抛出异常。

答案 1 :(得分:1)

在这种情况下,

RuntimeException可以正常工作:

Arrays.asList("a", "b")
        .stream()
        .map(x -> Optional.of(x).orElseThrow(
                () -> new RuntimeException("")));