Jin*_*won 4 java lambda optional
我知道我可以映射Optional到另一个包装类型可选.
Optional<Long> millis(Date date) {
return ofNullable(date).map(Date::getTime);
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能map或flatMap成OptionalLong?
OptionalLong millis(Date date) {
}
Run Code Online (Sandbox Code Playgroud)
我试过但没有运气.
ofNullable(value).flatMap(v -> { // javac has never liked me
return OptionalLong.of(v.getTime());
});
Run Code Online (Sandbox Code Playgroud)
您可以使用map以获取Optional<OptionalLong>然后orElse删除外部Optional像这样:
OptionalLong millis(Date date) {
return Optional.ofNullable(date).map(Date::getTime)
.map(OptionalLong::of).orElse(OptionalLong.empty());
}
Run Code Online (Sandbox Code Playgroud)
另一种(在这种情况下更短)的方式是使用三元运算符:
OptionalLong millis(Date date) {
return date == null ? OptionalLong.empty() : OptionalLong.of(date.getTime());
}
Run Code Online (Sandbox Code Playgroud)
或者如果您已经拥有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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3914 次 |
| 最近记录: |