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

我有一个 OptionalLong. 但是我的一个库需要一个Optional<Long>作为参数。


如何将 myOptionalLong转换为Optional<Long>?


我梦想着这样的事情:


OptionalLong secondScreenHeight = OptionalLong.of(32l); // or: OptionalLong.empty()

api.setHeight(secondScreenHeight.maptoRegularOptional()); // .maptoUsualOptional does not exist


富国沪深
浏览 227回答 3
3回答

烙印99

我不知道更简单的解决方案,但这将满足您的需求。OptionalLong secondScreenHeight = OptionalLong.of(32l);Optional<Long> optional = secondScreenHeight.isPresent()&nbsp;&nbsp; &nbsp; ? Optional.of(secondSceenHeight.getAsLong())&nbsp;&nbsp; &nbsp; : Optional.empty();api.setHeight(optional);

慕标5832272

你可以这样做:final OptionalLong optionalLong = OptionalLong.of(5);final Optional<Long> optional = Optional.of(optionalLong)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .filter(OptionalLong::isPresent)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .map(OptionalLong::getAsLong);

慕森王

另一种可能性,尽管仅来自 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();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java