Рассмотрим использование этого выражения:
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 8 Optional.ofNullable
:
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}