Здравствуйте. Было бы удобно, если бы в Java (интересует прежде всего 8-ая версия) была бы функциональная замена тернарного оператор "условие ? результат_true : результат_false".
Я могу и сам это написать, но зачем это делать, если это, возможно уже есть. Может кто-то находил в стандартной поставки такие методы.
ЗЫ Что-то вроде такого:
class TernaryOperator<T> {
public static T run(boolean condition, Getter<T> resultIfTrue, Getter<T> resultIfFalse) {
return condition ? resultIfTrue.get() : resultIfFalse.get();
}
}
interface Getter<T> {
T get();
}
Использование.
Исходный код:
if (!requestTypeEntity.isPresent()) {
logger.error("There is no request type with id = " + reqTypeId);
return EMPTY_VALUE;
}
return requestTypeEntity.map(RefRequestTypeEntity::getTypeName).orElse(EMPTY_VALUE);
Можно заменить на что-то такое:
return TernaryOperator.run(!requestTypeEntity.isPresent(),
() -> {
logger.error("There is no request type with id = " + reqTypeId);
return EMPTY_VALUE;
}, () -> {
requestTypeEntity.map(RefRequestTypeEntity::getTypeName).orElse(EMPTY_VALUE);
})