与itemKey == null相比,Optional.ofNullable(itemKey)有什么优势?

时间:2020-04-08 02:11:29

标签: java java-8 optional

我只是想知道我们何时需要在if else或嵌套null支票上选择Optional。比如说下面有没有其他优势,或者您认为《任择议定书》可能是一种过大的杀伤力

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

vs

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

当我不得不像下面这样选择给定对象的嵌套项目时,我总是热衷于使用Optional.ofOptional.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 :(得分:0)

如果您的代码中已经包含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);
}