Skip to content

建议重写 #2115

@Steve662024

Description

@Steve662024

https://javaguide.cn/java/new-features/java8-common-new-features.html#map-%E7%9B%B8%E5%85%B3%E6%96%B9%E6%B3%95%E3%80%82

map() 和 flatMap() 有什么区别的?
1.参数不一样,map 的参数上面看到过,flatMap 的参数是这样
2.flatMap() 参数返回值如果是 null 会抛 NullPointerException,而 map() 返回EMPTY。

这里写的有点浅显了,两个函数的功能不一样,所以参数才有区别,不能拿结果说两个不一样,是因为原因(功能)不一样才有不同的结果(参数)。

        Optional<Integer> optionalValue = Optional.of(5);
        Optional<String> mappedValue = optionalValue.map(val -> null);
        Optional<String> flatMappedValue = optionalValue.flatMap(val -> Optional.ofNullable(null));
        System.out.println(mappedValue);
        System.out.println(flatMappedValue);

以上代码map和flatMap里面的返回值都是null,输出的结果却是

Optional.empty
Optional.empty

NullPointerException并不是map和flatMap导致的。

这部分建议重写,给的代码示例也不是太好。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions