5

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();
  }
}

有这么难吗?显然,是的。Java 不知道函数Y中的类型是什么map,一切都死得很惨。map是否可以用 Java编写泛型?

4

2 回答 2

7

您正在寻找Optional.transform(Function),遵循 Guava 调用所有map-style 函数“transform”(例如 Lists.transform、Iterables.transform 等)的约定。

于 2013-10-16T19:04:13.913 回答
1

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

我知道这个回复已经很晚了,但我将它添加为一个答案,以帮助其他搜索这个的人。

于 2021-04-07T02:38:41.243 回答