作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我知道我可以将一个 Optional
映射到另一个可选的包装器类型。
Optional<Long> millis(Date date) {
return ofNullable(date).map(Date::getTime);
}
如何将 map
或 flatMap
转换为 OptionalLong
?
OptionalLong millis(Date date) {
}
我试过了,但没有成功。
ofNullable(value).flatMap(v -> { // javac has never liked me
return OptionalLong.of(v.getTime());
});
最佳答案
您可以使用 map
得到一个Optional<OptionalLong>
然后orElse
删除外部 Optional
像这样:
OptionalLong millis(Date date) {
return Optional.ofNullable(date).map(Date::getTime)
.map(OptionalLong::of).orElse(OptionalLong.empty());
}
另一种(在本例中更短)方法是改用三元运算符:
OptionalLong millis(Date date) {
return date == null ? OptionalLong.empty() : OptionalLong.of(date.getTime());
}
或者如果您已经拥有 Optional<Long>
:
OptionalLong toOptionalLong(Optional<Long> o) {
return o.map(OptionalLong::of).orElse(OptionalLong.empty());
}
OptionalLong toOptionalLong(Optional<Long> o) {
return o.isPresent() ? OptionalLong.of(o.get()) : OptionalLong.empty();
}
关于java - 如何将可选映射到原始可选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28249237/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!