gpt4 book ai didi

java - 我不能映射/flatMap 一个 OptionalInt 吗?

转载 作者:IT老高 更新时间:2023-10-28 20:35:35 25 4
gpt4 key购买 nike

为什么在 OptionalInt 或其他原始可选风格上似乎没有 map()/flatMap() 方法?

stream() 映射操作允许对象和原语之间的转换。但是为什么 Optional 不利用这个呢?

OptionalInt profileId = OptionalInt.of(124);

Optional<Profile> profile = profileId.map(i -> getProfile(i)); //no such valid map() method!

最佳答案

原始可选项在设计上没有 mapflatMapfilter 方法。

此外,根据 Java8 in Action p.305你不应该使用它们。在流上使用原语的理由是性能原因。在大量元素的情况下,装箱/拆箱开销很大。但这是毫无意义的,因为 Optional 中只有一个元素。

此外,考虑示例:

public class Foo {
public Optional<Integer> someMethod() {
return Optional.of(42);
}
}

以及作为方法引用的用法:

.stream()
.map(Foo::someMethod)

如果将 someMethod 的返回类型更改为 OptionalInt:

public OptionalInt someMethod() {
return OptionalInt.of(42);
}

您不能将其用作方法引用,代码将无法编译:

.map(Foo::someMethod)

关于java - 我不能映射/flatMap 一个 OptionalInt 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29104968/

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