使用 Optional.ofNullable 作为三元运算符的替代品是一种很好的做法吗?
请考虑以下表达式的用法:
String hi = Optional.ofNullable(sayHi()).orElse("-");
这实际上对应于这个三元表达式:
String hi = sayHi() != null ? sayHi() : "-";
与方法调用的这种用法是一种很好的做法吗?或者只是额外的冗长编码?Optional.ofNullable
我认识到这实际上创建了一个变量,并避免了两次调用该方法。为了避免这个问题,你实际上可以创建一个额外的变量,但这会增加三元选项的详细程度:Optional.ofNullable
sayHi()
String hi = sayHi();
hi = hi != null ? hi : "-";
另一方面,在不成为额外对象的情况下创建。因此,肯定会有更多的开销。Optional.ofNullable
hi
null
Optional
因此,使用这种类型的构造来替换三元构造函数似乎有一些优点和缺点。
顺便说一句:这是Java 8的实现:Optional.ofNullable
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}