Супер простой вопрос:
Вот мой простой Java-код с использованием традиционного троичного оператора ?
public DateTime getCreatedAt() {
return !recordA.isPresent() ? recordB.get().getCreatedAt() : recordA.get().getCreatedAt();
}
Моя лучшая ставка следующая:
public DateTime getCreatedAt() {
return recordA.map(
record -> record.getCreatedAt())
.orElse(recordB.get().getCreatedAt());
}
Это может скомпилироваться, но похоже, что он не ведет себя правильно.
Он всегда выполняет обе ветви, т.е. когда recordA
isPresent (), он все еще выполняет recordB.get().getCreatedAt()
, что бросает меня
java.util.NoSuchElementException: No value present
Любой ценится!
По сути, я бы хотел заменить традиционный троичный вариант более продвинутыми опциональными / лямда-функциями. СПАСИБО!