Многим программистам, которые только начинают работать с Optional или Java 8, разница между orElse() и
orElseGet() непонятна. Однако между ними есть тонкое, но важное различие:А) Вариант с
orElse(). При выполнении метода в консоль выведется 'Getting Default Value', несмотря на то, что объект в Optional присутствует.Б) При использовании
orElseGet() для извлечения обернутого значения метод getDefaultValue() не вызывается, поскольку содержащееся значение присутствует.Таким образом, в первом случае мы просто создали один лишний объект, который никогда не используется, что может оказать влияние на производительность.
👉@BookJava
