在Java中实现'Maybe'

So8*_*res 3 java

Guava的Optional类非常接近于MaybeJava中的有用类型.我想做的就是扩展一下:

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();
  }
}
Run Code Online (Sandbox Code Playgroud)

那么难吗?显然是的,确实如此.Java不知道函数中的Y类型是什么map,一切都死得很厉害.是否可以map在Java中编写泛型?

Mar*_*ers 6

你正在寻找Optional.transform(Function),遵循Guava的调用全map风格函数"转换" 的惯例(例如Lists.transform,Iterables.transform等).

  • 嗯,实际上,我也想实现join和catMaybes等等.但Optional.transform的实现向我展示了如何实现这样的事情.谢谢!(对于那些想知道的人来说,答案是将函数声明为`public <Y> Maybe <Y> map(...){`;这是我缺少的java语法.) (2认同)