Нет ничего лучше, чем тип Optional
отрим использование этого выражения:
String hi = Optional.ofNullable(sayHi()).orElse("-");
что эффективно соответствует этому троичному выражению:
String hi = sayHi() != null ? sayHi() : "-";
Это использованиеOptional.ofNullable
с вызовом метода хорошая практика? Или просто лишнее многословное кодирование?
Я признаю этоOptional.ofNullable
на самом деле создает переменную и избегает вызоваsayHi()
метод дважды. Чтобы избежать этой проблемы, вы могли бы создать дополнительную переменную, но это добавляет многословности тернарной опции:
String hi = sayHi();
hi = hi != null ? hi : "-";
С другой стороныOptional.ofNullable
создает в случаеhi
Не существуетnull
дополнительныйOptional
объект. Так что наверняка есть дополнительные накладные расходы.
Так что, похоже, есть некоторые плюсы и минусы использования этого типа конструкции для замены троичного конструктора.
Кстати: это реализация Java 8Optional.ofNullable
:
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}