gpt4 book ai didi

java - 使用 Optional.ofNullable 替代三元运算符是一种好习惯吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:03:30 30 4
gpt4 key购买 nike

考虑这个表达式的用法:

String hi = Optional.ofNullable(sayHi()).orElse("-");

有效对应于这个三元表达式:

String hi = sayHi() != null ? sayHi() : "-";

Optional.ofNullable 与方法调用的这种用法是一种好的做法吗?或者只是额外冗长的编码?


我认识到 Optional.ofNullable 实际上创建了一个变量并避免调用 sayHi() 方法两次。为了避免这个问题,您实际上可以创建一个额外的变量,但这会增加三元选项的冗长程度:

String hi = sayHi();
hi = hi != null ? hi : "-";

另一方面,Optional.ofNullablehi 不是 null 的情况下创建一个额外的 Optional 对象.所以肯定会有更多的开销。

因此,使用这种类型的构造函数来替代三元构造函数似乎有利有弊。


顺便说一句:这是 Optional.ofNullable 的 Java 8 实现:

public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}

最佳答案

在 JDK 9 或更高版本中,使用这个:

String hi = Objects.requireNonNullElse(sayHi(), "-");

这避免了在使用三元运算符时必须重复 sayHi(),或者将其值分配给在三元中重用的局部变量。这可能是一个小的改进。它还回避了是否使用 Optional 的问题。 :-)

关于java - 使用 Optional.ofNullable 替代三元运算符是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53504573/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com