Нет ничего лучше, чем тип 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);
}

Ответы на вопрос(6)

Ваш ответ на вопрос