Что делает этот код?
publicstaticvoidmain(Stringl] args) {
Optional<Integer> optional = Optional.empty:
if (optional.isPresent) {
System.out.printin(optional.get):
} else f
System.out.printin(optional.orElseGet(0 -> 5)): // строка 1
}
Выводит в консоль 0
Код не компилируется на строке 1
Код бросает ошибку на строке 1
Выводит в консоль 5
Другие предметы Колледж Работа с Optional в Java Java программирование колледж Optional код компиляция вывод консоль ошибки метод учебный материал
Давайте разберем этот код шаг за шагом, чтобы понять, что он делает и какой будет вывод.
Вот исправленный вариант кода, чтобы он стал компилируемым:
public static void main(String[] args) {
Optional optional = Optional.empty();
if (optional.isPresent()) {
System.out.println(optional.get());
} else {
System.out.println(optional.orElseGet(() -> 5)); // строка 1
}
}
Теперь давайте проанализируем, что происходит в этом коде:
Переменная optional инициализируется как пустой объект Optional.empty(). Это означает, что optional не содержит никакого значения.
С помощью метода isPresent() мы проверяем, есть ли значение в optional. Поскольку он пустой, isPresent() вернет false.
Поскольку isPresent() вернул false, мы переходим в блок else.
Здесь вызывается метод orElseGet(), который принимает лямбда-выражение () -> 5. Этот метод возвращает значение, если optional пустой. В нашем случае, он вызовет лямбда-выражение и вернет значение 5.
Таким образом, на консоль будет выведено значение 5.
Теперь давайте ответим на ваш вопрос о возможных вариантах вывода:
Таким образом, правильный ответ: Выводит в консоль 5.