Guava的Optional类非常接近于Java中的有用Maybe
类型。我想做的就是延长一点:
class Maybe<X> extends Optional<X> {
public Maybe<Y> map(Function<X, Y> f) {
if (isPresent()) {
return Maybe.of(f.apply(get()));
}
return Maybe.absent();
}
}
那么难吗?显然是的,确实如此。 Java不知道Y
函数中的map
类型是什么,一切都死得很厉害。是否可以在Java中编写通用的map
?
答案 0 :(得分:6)
你正在寻找Optional.transform(Function)
,遵循Guava的所有map
- 样式函数“转换”的惯例(例如Lists.transform,Iterables.transform等)。
答案 1 :(得分:1)
从 JDK8 开始,这是作为 java.util.Optional 实现的,并且它似乎具有您正在寻找的映射功能,因为它与 Streams 集成。 Here is the documentation.
我知道这个回复已经很晚了,但我将其添加为答案,以供其他搜索者使用。