在Java中实现'Maybe'

时间:2013-10-16 19:00:33

标签: java

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

2 个答案:

答案 0 :(得分:6)

你正在寻找Optional.transform(Function),遵循Guava的所有map - 样式函数“转换”的惯例(例如Lists.transform,Iterables.transform等)。

答案 1 :(得分:1)

从 JDK8 开始,这是作为 java.util.Optional 实现的,并且它似乎具有您正在寻找的映射功能,因为它与 Streams 集成。 Here is the documentation.

我知道这个回复已经很晚了,但我将其添加为答案,以供其他搜索者使用。