英文:
What's the advantage of Optional.ofNullable(itemKey) over itemKey == null
问题
以下是翻译好的部分:
我只是想知道在什么情况下我们需要在 if else
或嵌套的 null
检查中选择使用 Optional。例如,下面两者之间是否有任何优势,或者您认为 Optional 可能过于复杂。
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 的。
英文:
I was just wondering when do we need to choose Optional over if else
or nested null
check. say for example is there any advantage of one another below or do you think the Optional could be an overkill
String.valueOf(Optional.ofNullable(itemKey).map(ItemKey::getId).orElse(null));
vs
String.valueOf(itemKey == null ? null : itemKey.getId());
I always keen to use the Optional.of
or Optional.ofNullable
when I had to pick nested item of a given object like below,
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("");
}
Can I please know where in the code the Optional is absolutely unnecessary.
答案1
得分: 0
如果您的代码中已经有了 itemKey,将其转换为 Optional 没有任何意义,这只会使代码变得更复杂。然而,如果您想要使用 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);
}
英文:
If you already have itemKey in your code, there is no meaning of transforming it to an Optional, it just makes the code more complex. However, if you want to use optionals, I think it'd be more appropriate to do something like this:
public Optional<ItemKey> getItemKey() {
if (...) {
return Optional.of(new ItemKey());
}
return Optional.empty()
}
public void mainCode() {
String id = getItemKey().map(ItemKey::getId).orElse(null);
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论