Дополнительное преобразование из Guava в Java

Как сделать преобразование из Guava Необязательно для Java Необязательно, без использования каких-либо операторов if?

if (maybeSomething.isPresent()) {
    return java.util.Optional.of(maybeSomething.get())
} else {
    return java.util.Optional.empty()
}

Ответ 1

Использовать преобразование guava

maybeSomething
    .transform(java.util.Optional::of).or(java.util.Optional.empty());

Ответ 2

Как насчет Optional javaOpt = Optional.ofNullable(guavaOpt.orNull());?

Ответ 3

Guava Release 21 представил toJavaUtil и fromJavaUtil методы преобразования в Optional class.

Под капотом это, похоже, реализовано в значительной степени, поскольку предложение в Kayaman отвечает:

public java.util.Optional<T> toJavaUtil() {
    return java.util.Optional.ofNullable(orNull());
}

...

public static <T> Optional<T> fromJavaUtil(@Nullable java.util.Optional<T> javaUtilOptional) {
    return (javaUtilOptional == null) ? null : fromNullable(javaUtilOptional.orElse(null));
}

Ответ 4

Это полностью зависит от обычаев, которые вы сейчас используете в своих опциях Guava; и первая проблема заключается в различиях между ними.

Среди прочих:

  • Guava Необязательный - абстрактный, Java 8 является окончательным; В Guava существуют методы
  • которые не относятся к Java 8, и наоборот.

Это означает, что первое, что вам нужно определить, это ваши разные обычаи Гуавы; это будет обусловлено тем, как вам придется создавать эквивалентные Java 8.

Но учитывая разницу в API для обоих, некоторые if по пути кажутся неизбежными...

Мое личное предложение здесь состояло бы в том, чтобы просто пройти весь путь и заменить все текущие применения Guava с Java 8; и если требуется "период отказа", осудите необходимые методы и предоставите их до тех пор, пока это необходимо, до тех пор, пока Guava Optional не будет полностью исключен.