Java 8 Отображение нескольких необязательных параметров в функцию

Вы должны иметь текст для копирования / вставки из Word Document. Документ Word использует Smart Quotes. Вы можете заменить его специальным символом (& amp; rsquo;) или просто ввести свой HTML-редактор (').

Я уверен, что это решит вашу проблему.

5
задан Naman 5 March 2019 в 17:15
поделиться

3 ответа

Вы могли бы передавать аргументы и применять условие только один раз, но будет ли это более привлекательным, чем ваши решения, в глазах наблюдателя:

if (Stream.of(a, b).allMatch(Optional::isPresent)) {
    return f(a.get(), b.get());
}
0
ответ дан Mureinik 5 March 2019 в 17:15
поделиться

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

Я считаю, что это чище и проще, чем ваш вариант 2:

String a = getA().orElse(null);
String b = getB().orElse(null);
if(a != null && b != null) {
    return f(a, b);
}
0
ответ дан Loris Securo 5 March 2019 в 17:15
поделиться

Если вы уверены, что a и b оба присутствуют (как, по-видимому, подсказывает ваш последний вызов get в решении 1), я думаю, что это довольно просто:

    return f(getA().orElseThrow(() -> new NoSuchElementException("a not present")),
             getB().orElseThrow(() -> new NoSuchElementException("b not present")));

Если вы не Не уверен, что оба присутствуют, я бы предпочел ваше решение 1. Он использует Optional лучше всего. Только я бы не назвал get в конце, а скорее orElse или что имеет смысл в вашей ситуации, например:

    return getA()
            .flatMap(a -> getB().map(b -> f(a,b)))
            .orElse("Not both present");
0
ответ дан Ole V.V. 5 March 2019 в 17:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: