Что делает этот код?
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) { Optionaloptional = 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.