【发布时间】:2018-11-27 16:57:25
【问题描述】:
考虑这个表达式的用法:
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 对象。所以肯定会有更多的开销。
所以使用这种类型的构造来代替三元构造似乎有一些优点和缺点。
顺便说一句:这是Optional.ofNullable的Java 8实现:
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}
【问题讨论】:
标签: java java-8 optional nullable