Код: Выделить всё
public void method(MyObject obj) {
String value = Optional.ofNullable(obj)
.map(x -> obj.doSomething())
.orElse(MyObject.DEFAULT_VALUE);
}
Здесь, даже если obj имеет значение null, исключение NullPointerException НЕ будет выброшено, поскольку мы вызываем метод ofNullable перед картой и, следовательно, функция сопоставления будет вызываться только тогда, когда obj не имеет значения null.
Таким образом, с точки зрения результатов, как x -> obj.doSomething(), так и x -> x.doSomething() будут эквивалентны в случае необязательного. (Очевидно, что результат будет другим в случае Stream или при использованииOptional.of).
Есть ли какие-либо другие различия? И с точки зрения использования, я думаю, что x -> x.doSomething() должно быть предпочтительнее, чем использование самого фактического объекта.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ofnullable