gpt4 book ai didi

java - 如何将可选映射到原始可选?

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

我知道我可以将一个 Optional 映射到另一个可选的包装器类型。

Optional<Long> millis(Date date) {
return ofNullable(date).map(Date::getTime);
}

如何将 mapflatMap 转换为 OptionalLong

OptionalLong millis(Date date) {
}

我试过了,但没有成功。

ofNullable(value).flatMap(v -> { // javac has never liked me
return OptionalLong.of(v.getTime());
});

最佳答案

您可以使用 map得到一个Optional<OptionalLong>然后orElse删除外部 Optional像这样:

OptionalLong millis(Date date) {
return Optional.ofNullable(date).map(Date::getTime)
.map(OptionalLong::of).orElse(OptionalLong.empty());
}

另一种(在本例中更短)方法是改用三元运算符:

OptionalLong millis(Date date) {
return date == null ? OptionalLong.empty() : OptionalLong.of(date.getTime());
}

或者如果您已经拥有 Optional<Long> :

OptionalLong toOptionalLong(Optional<Long> o) {
return o.map(OptionalLong::of).orElse(OptionalLong.empty());
}
OptionalLong toOptionalLong(Optional<Long> o) {
return o.isPresent() ? OptionalLong.of(o.get()) : OptionalLong.empty();
}

关于java - 如何将可选映射到原始可选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28249237/

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