2015-09-08 2 views
2

Я понимаю, что вызов Optionals ifPresent() предназначен для замены нулевой проверки. Вытягивая примеры кода из документации Oracle, она представляется очень полезной в простых ситуациях. Например:Java 8 Необязательный ifPresent() vs! = Null

Optional<Soundcard> soundcard = ...; 
soundcard.ifPresent(System.out::println); 

Я просто хочу понять, почему это считается лучше, чем нулевой чек. Читаемость? Представление? Мне кажется, что это вызовет удар по эффективности проекта, поскольку новый объект должен быть введен для того, чтобы удерживать объект, который мы в конечном итоге хотим получить? В полной мере, почему этоsoundcard.ifPresent()

считается лучше, чем этоif(soundcard != null).

+0

Посмотрите на [this] (http://stackoverflow.com/questions/271526/avoiding-null-statements-in-java) популярный пост. – Mordechai

+1

См. Также http://stackoverflow.com/q/9561295/869736 –

ответ

2

Optional - это способ замены с нулевым значением с ненулевым значением. Optional может содержать непустую ссылку (в этом случае мы говорим, что ссылка «присутствует»), или она может содержать ничего (в этом случае мы говорим, что ссылка «отсутствует»). Он никогда не говорил «содержать null».

И, кроме того, читаемость заставляет вас думать об отсутствующем случае, если вы хотите, чтобы ваша программа вообще компилировалась, так как вы должны активно разворачивать Optional и обращаться к этому случаю.

Источник: Using and Avoiding null

И, как указано выше, посмотрите на this тщательно ответил пост.

Смежные вопросы