В чем преимущество Optional.ofNullable (itemKey) над itemKey == null - PullRequest
0 голосов
/ 08 апреля 2020

Мне было просто интересно, когда нам нужно выбрать опциональный чек вместо if else или вложенный null. скажем, например, есть ли какое-либо преимущество друг друга ниже или вы считаете, что Дополнительный может быть излишним

String.valueOf(Optional.ofNullable(itemKey).map(ItemKey::getId).orElse(null));

против

String.valueOf(itemKey == null ? null : itemKey.getId());

Я всегда хотел использовать Optional.of или Optional.ofNullable когда мне нужно было выбрать вложенный элемент данного объекта, как показано ниже,

private String formatCurrency(String symbol, BigDecimal value) {
    return Optional.ofNullable(value)
            .map(BigDecimal::doubleValue)
            .map(Object::toString)
            .map(val -> symbol + val.replaceAll(REGEX_REMOVE_TRAILING_ZEROS, "$2"))
            .orElse("");
}

Могу ли я узнать, где в коде Optional абсолютно не нужен.

1 Ответ

0 голосов
/ 08 апреля 2020

Если у вас уже есть itemKey в вашем коде, нет смысла преобразовывать его в Optional, он просто делает код более сложным. Однако, если вы хотите использовать дополнительные функции, я думаю, что было бы более уместно сделать что-то вроде этого:

public Optional<ItemKey> getItemKey() {
    if (...) {
        return Optional.of(new ItemKey());
    }
    return Optional.empty()
}

public void mainCode() {
    String id = getItemKey().map(ItemKey::getId).orElse(null);
}
...