簡體   English   中英

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

[英]How to map an OptionalLong to an Optional<Long>?

我有一個OptionalLong的實例。 但我的一個庫需要一個Optional<Long>作為參數。

如何將OptionalLong轉換為Optional<Long>

我夢想着這樣的事情:

OptionalLong secondScreenHeight = OptionalLong.of(32l); // or: OptionalLong.empty()
api.setHeight(secondScreenHeight.maptoRegularOptional()); // .maptoUsualOptional does not exist

你可以這樣做:

final OptionalLong optionalLong = OptionalLong.of(5);

final Optional<Long> optional = Optional.of(optionalLong)
            .filter(OptionalLong::isPresent)
            .map(OptionalLong::getAsLong);

我不知道更簡單的解決方案,但這將滿足您的需求。

OptionalLong secondScreenHeight = OptionalLong.of(32l);
Optional<Long> optional = secondScreenHeight.isPresent() 
    ? Optional.of(secondSceenHeight.getAsLong()) 
    : Optional.empty();
api.setHeight(optional);

LongStream一種可能性,盡管僅來自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();

這應該工作。

Optional<Long> returnValue = Optional.empty();
if(secondScreenHeight.isPresent()) {
      returnValue = Optional.of(secondScreenHeight.getAsLong());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM