- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
考虑这个表达式的用法:
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);
}
最佳答案
在 JDK 9 或更高版本中,使用这个:
String hi = Objects.requireNonNullElse(sayHi(), "-");
这避免了在使用三元运算符时必须重复 sayHi()
,或者将其值分配给在三元中重用的局部变量。这可能是一个小的改进。它还回避了是否使用 Optional
的问题。 :-)
关于java - 使用 Optional.ofNullable 替代三元运算符是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53504573/
在我生活的世界中,构建一个将所有飞镖都扔到墙上的解决方案,并希望其中一些能命中靶心是一种非常糟糕的解决方案方法。 那么,我的问题出现了,什么时候在约定可接受的生产系统中使用 INSERT IGNORE
在数据处理时,经常会因为index报错而发愁。不要紧,本次来和大家聊聊pandas中处理索引的几种常用方法。 1.读取时指定索引列 很多情况下,我们的数据源是 CSV 文件。假设
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 6 年前。 Improve
我是一名优秀的程序员,十分优秀!