为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 OptionalLong 映射到 Optional<Long>?

如何将 OptionalLong 映射到 Optional<Long>?

富国沪深 2021-07-10 18:05:14
我有一个 OptionalLong. 但是我的一个库需要一个Optional<Long>作为参数。如何将 myOptionalLong转换为Optional<Long>?我梦想着这样的事情:OptionalLong secondScreenHeight = OptionalLong.of(32l); // or: OptionalLong.empty()api.setHeight(secondScreenHeight.maptoRegularOptional()); // .maptoUsualOptional does not exist
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

我不知道更简单的解决方案,但这将满足您的需求。


OptionalLong secondScreenHeight = OptionalLong.of(32l);

Optional<Long> optional = secondScreenHeight.isPresent() 

    ? Optional.of(secondSceenHeight.getAsLong()) 

    : Optional.empty();

api.setHeight(optional);


查看完整回答
反对 回复 2021-07-14
?
慕标5832272

TA贡献1966条经验 获得超4个赞

你可以这样做:


final OptionalLong optionalLong = OptionalLong.of(5);


final Optional<Long> optional = Optional.of(optionalLong)

            .filter(OptionalLong::isPresent)

            .map(OptionalLong::getAsLong);


查看完整回答
反对 回复 2021-07-14
?
慕森王

TA贡献1777条经验 获得超3个赞

另一种可能性,尽管仅来自 JDK 9 是通过新OptionalLong.stream()方法,它返回一个LongStream. 然后可以将其装箱为Stream<Long>:


OptionalLong optionalLong = OptionalLong.of(32);

Optional<Long> optional = optionalLong.stream().boxed().findFirst();

使用 JDK 8 可以完成类似的操作,方法是跳出Guava 中的Streams实用程序类:


Optional<Long> optional = Streams.stream(optionalLong).boxed().findFirst();


查看完整回答
反对 回复 2021-07-14
  • 3 回答
  • 0 关注
  • 226 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信