Блок 7 | Улучшенное API Flashcards
Что такое Optional?
Optional в Java - это контейнерный объект, который может содержать или не содержать некоторое значение. Он был введен в Java 8 в качестве части Java API для борьбы с проблемами, связанными с null-ссылками. Optional предоставляет удобный способ обработки потенциально отсутствующих значений без необходимости явной проверки на null.
Перечислите методы Optional.
- Optional.of(value) создает Optional объект, содержащий переданное значение. Если значение null, вызывается исключение NullPointerException.
1.1 Optional.ofNullable(value) создает Optional объект с переданным значением. Если значение null, создается пустой Optional. - Optional.empty() создает пустой Optional, который не содержит значения.
- isPresent() возвращает true, если Optional содержит значение, и false, если он пуст.
- orElse(defaultValue) возвращает значение, если Optional содержит его, иначе возвращает переданное значение по умолчанию.
4.1 orElseGet(supplier) возвращает значение, если Optional содержит его, иначе возвращает значение, полученное от переданного поставщика (Supplier). - orElseThrow(exceptionSupplier) возвращает значение, если Optional содержит его, иначе выбрасывает исключение, созданное переданным поставщиком.
- get() возвращает значение, если Optional содержит его. Если Optional пуст, выбрасывается исключение NoSuchElementException.
- filter(predicate) возвращает новый Optional, содержащий значение, если оно соответствует предикату, иначе возвращает пустой Optional.
- map(mapper) возвращает новый Optional, содержащий результат применения функции к значению, если оно присутствует. Если Optional пуст, возвращается пустой Optional.
- flatMap(mapper) аналогичен map, но позволяет возвращать Optional из функции-маппера.
- ifPresent(consumer) выполняет переданный потребителю (Consumer) код, если Optional содержит значение.
Расскажите про фабричные методы List.of, Set.of, Map.of?
List.of() Создает неизменяемый список с заданными элементами.
Set.of() Создает неизменяемое множество с заданными элементами.
Map.of() создает неизменяемую карту с парами ключ-значение.
Map.ofEntries() позволяет создать карту с более чем десятью парами ключ-значение.
Для чего используется var?
Ключевое слово var в Java введено в Java 10 и используется для объявления локальных переменных с неявным (инференсивным) типом. Это означает, что компилятор Java автоматически вычисляет тип переменной на основе значения, которое ей присваивается.
Преимущества использования var:
Краткость кода: Уменьшает количество повторяемого кода за счет уменьшения явного указания типов, что может улучшить читаемость кода.
Гибкость и поддержка изменений: Позволяет легче вносить изменения в код, так как не нужно обновлять типы переменных вручную при изменении их значения.
Однако важно использовать var с умом и в тех местах, где тип переменной легко понятен из контекста. Это обеспечивает читаемость кода и избегает создания сложных конструкций, которые могут затруднить чтение и понимание кода.
В каких случаях можно использовать var?
Ключевое слово var в Java может использоваться для объявления локальных переменных в тех случаях, где тип переменной явно вытекает из контекста и может быть однозначно определен компилятором. Вот несколько типичных случаев, когда можно использовать var:
- Инициализация при объявлении:
- Циклы:
- В Lambda-выражениях:
- Возвращаемые значения методов:
- Объявление в цепочке вызовов методов:
- В цепочке вызовов статических методов:
- В try-with-resources:
Важно понимать, что var не заменяет явное указание типов в тех ситуациях, где тип переменной неочевиден из контекста. Он предоставляет сокращенный и удобный синтаксис только тогда, когда тип может быть безопасно идентифицирован компилятором.
Также стоит учитывать, что использование var не рекомендуется в следующих случаях:
В ситуациях, где тип переменной неочевиден или может вызвать путаницу.
При объявлении полей класса, параметров методов, возвращаемых типов методов и массивов.
В ситуациях, где тип переменной изменяется после ее инициализации.