Необязательный Java 8 с «возвратом» из методов - PullRequest
0 голосов
/ 28 февраля 2019

Хорошо. Я хотел бы создать метод, который возвращает строку в зависимости от некоторого условия (независимо от того, является ли параметр нулевым или нет):

private static String getErrorMessage(String code, Object... params) {
    Optional.ofNullable(params)
              .ifPresent(params -> processWithParams(code,params))
              .orElse(() -> process(code));
}

Оба метода processWithParams () и process () возвращают String (строковое значение - это значение, которое я хочу вернуть из метода getErrorMessage ()), возможно ли это?

Спасибо

1 Ответ

0 голосов
/ 01 марта 2019

Я не понимаю, почему вы должны принять вызывающего абонента, передающего null для params.Если кто-либо вызывает getErrorMessage только с одним аргументом, param будет пустым массивом (не null).Поэтому я предлагаю:

    Objects.requireNonNull(params);
    return processWithParams(code, params);

Абоненту не запрещено звонить с null в качестве второго аргумента.Если в вашем коде уже есть много таких вызовов, и вы не хотите убирать это сейчас:

    if (params == null) {
        params = new Object[] {};
    }
    return processWithParams(code, params);

Однако, если по какой-то странной причине вы настаиваете, Борис Паук прав:

    return Optional.ofNullable(params)
              .map(p -> processWithParams(code, p))
              .orElse(process(code));

Или, если обработка без надобности слишком дорого стоит:

              .orElseGet(() -> process(code));
...