gpt4 book ai didi

Java 8 : Difference between map and flatMap for null-checking style

转载 作者:搜寻专家 更新时间:2023-11-01 02:20:58 25 4
gpt4 key购买 nike

例如我有两个模型类:

public class Person {}
public class Car {}

现在,我有一个接受 2 个可选参数的方法:

public void example1(Optional<Person> person, Optional<Car> car) {
if (person.isPresent() && car.isPresent()) {
processing(person.get(), car.get());
}
}

现在,我不想像这样使用 null 检查,我使用 flatMapmap

    person.flatMap(p -> car.map(c -> processing(p, c)));
person.map(p -> car.map(c -> processing(p, c)));

所以我的问题是:以上两种用法有什么区别吗?因为我认为那是一样的:如果一个值为 null,java 将停止执行并返回。

谢谢

最佳答案

不同的只是一个会返回Optional<?>另一个将返回 Optional<Optional<?>> (将 ? 替换为 processing() 的返回类型)。由于您要丢弃返回类型,因此没有区别。

但最好避免映射函数,按照惯例应该避免副作用,而是使用更惯用的 ifPresent() :

person.ifPresent(p -> car.ifPresent(c -> processing(p, c)));

这也适用于 processing()有一个 void返回类型,映射函数不是这种情况。

关于Java 8 : Difference between map and flatMap for null-checking style,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43055118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com