Необязательный orElse Необязательный в Java

Я работал с новымНеобязательный тип в Java 8и я столкнулся с тем, что похоже на обычную операцию, которая не поддерживается функционально: "orElseOptional"

Рассмотрим следующую схему:

Optional<Result> resultFromServiceA = serviceA(args);
if (resultFromServiceA.isPresent) return result;
else {
    Optional<Result> resultFromServiceB = serviceB(args);
    if (resultFromServiceB.isPresent) return resultFromServiceB;
    else return serviceC(args);
}

Существует много форм этого паттерна, но он сводится к желанию "orElse" для необязательного параметра, который принимает функцию, создающую новый необязательный параметр, вызываемый только в том случае, если текущий не существует.

Это реализация будет выглядеть так:

public Optional<T> orElse(Supplier<Optional<? extends T>> otherSupplier) {
    return value != null ? this : other.get();
}

Мне любопытно, есть ли причина, по которой такого метода не существует, если я просто использую Optional непреднамеренным образом, и какие другие способы люди придумали для решения этого случая.

Я должен сказать, что я думаю, что решения, включающие пользовательские служебные классы / методы, не элегантны, потому что люди, работающие с моим кодом, не обязательно будут знать, что они существуют.

Кроме того, если кто-нибудь знает, будет ли такой метод включен в JDK 9, и где я мог бы предложить такой метод? Мне кажется, это довольно вопиющее упущение в API.

Ответы на вопрос(6)

Ваш ответ на вопрос