我不得不将一个选项转换为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();
}发布于 2019-11-06 05:20:07
您应该使用Optional.map()方法:
如果值存在,则对其应用所提供的映射函数,如果结果不为空,则返回一个描述结果的可选参数。否则,返回一个空的Optional。
Optional<Long> optionalLong = Optional.ofNullable(createdOrder.acceptedTime());
Optional<Instant> optionalInstant = optionalLong.map(Instant::ofEpochMilli);发布于 2019-11-06 05:20:59
.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://stackoverflow.com/questions/58719588
复制相似问题