Вы должны иметь текст для копирования / вставки из Word Document. Документ Word использует Smart Quotes. Вы можете заменить его специальным символом (& amp; rsquo;) или просто ввести свой HTML-редактор (').
Я уверен, что это решит вашу проблему.
Вы могли бы передавать аргументы и применять условие только один раз, но будет ли это более привлекательным, чем ваши решения, в глазах наблюдателя:
if (Stream.of(a, b).allMatch(Optional::isPresent)) {
return f(a.get(), b.get());
}
Я считаю, что если нет хорошего способа использовать Optional
, то нет никаких оснований пытаться использовать его в любом случае.
Я считаю, что это чище и проще, чем ваш вариант 2:
String a = getA().orElse(null);
String b = getB().orElse(null);
if(a != null && b != null) {
return f(a, b);
}
Если вы уверены, что 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");