可选<长>到可选<即时>

我必须将Option转换为Optional,并为此创建了代码,但我认为不使用private方法的时间可能更短。

Optional<Long> optionalLong  ;
 Optional<Instant> optionalInstant;


assertThat(createdOrder.acceptedTime,is( OptionalLongToOptionalInstant(expectedOrder.acceptedTime())));


private Optional<Instant> OptionalLongToOptionalInstant(Optional<Long> optionalLong ) {
    if(optionalLong.isPresent()){
        return   Optional.of(Instant.ofEpochMilli(optionalLong.get()));
    }
    return Optional.empty();
}
zhzhhzhhh 回答:可选<长>到可选<即时>

您应该使用Optional.map()方法:

  

如果存在值,则将提供的映射函数应用于该值,如果结果为非null,则返回描述结果的Optional。否则,返回一个空的Optional。

Optional<Long> optionalLong  = Optional.ofNullable(createdOrder.acceptedTime());
Optional<Instant> optionalInstant = optionalLong.map(Instant::ofEpochMilli);
,

.map()方法是您所需要的

assertThat(createdOrder.acceptedTime,is(expectedOrder.acceptedTime().map(Instant::ofEpochMilli)));

源代码,它会为您检查isPresent()

public <U> Optional<U> map(Function<? super T,? extends U> mapper) {
    Objects.requireNonNull(mapper);
    if (!isPresent()) {
        return empty();
    } else {
        return Optional.ofNullable(mapper.apply(value));
    }
}
本文链接:https://www.f2er.com/3156361.html

大家都在问