Что выведет код Middle Лямбды и Stream API обновлено
Что выведет: orElse и orElseGet
Вопрос
Что выведет программа (Java 21)? Каждый вывод println с новой строки.
import java.util.*;
public class Main {
static String fallback() {
System.out.println("fallback");
return "default";
}
public static void main(String[] args) {
Optional<String> some = Optional.of("value");
System.out.println(some.orElse(fallback()));
System.out.println(some.orElseGet(Main::fallback));
System.out.println(Optional.<String>empty().map(String::length).orElse(-1));
}
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: fallback, value, value, -1. Аргумент orElse вычисляется до вызова, поэтому fallback печатается, хотя значение есть. orElseGet вызывает Supplier только для пустого Optional, тут не вызывает. map на пустом Optional ничего не делает, срабатывает orElse(-1).
Что выведет
fallback
value
value
-1
Разбор
Аргумент orElse вычисляется до вызова, поэтому fallback печатается, хотя значение есть. orElseGet вызывает Supplier только для пустого Optional, тут не вызывает. map на пустом Optional ничего не делает, срабатывает orElse(-1).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.