У меня есть ряд функций:
String first(){}
String second(){}
...
String default(){}
Каждый может вернуть нулевое значение, кроме значения по умолчанию. каждая функция может принимать разные параметры. Например, сначала можно не принимать аргументов, второй может принимать значение String, третий может принимать три аргумента и т.д.. Я хотел бы сделать что-то вроде:
ObjectUtils.firstNonNull(first(), second(), ..., default());
Проблема состоит в том, что из-за вызова функции это требует высокой оценки. Где я хотел бы выйти раньше, сказать после второй функции (потому что вызовы функций могут быть дорогими, думаю, API-вызовы и т.д.). На других языках вы можете сделать что-то похожее на это:
return first() || second() || ... || default()
В Java я знаю, что могу сделать что-то вроде:
String value;
if (value = first()) == null || (value = second()) == null ...
return value;
Это не очень читаемая ИМО из-за всех ошибок == null. ObjectUtils.firstNonNull() сначала создает коллекцию, а затем выполняет итерацию, что нормально, если функция оценивается лениво.
Предложения? (кроме того, чтобы сделать кучу ifs)