Блок 7 | Улучшенное API Flashcards

1
Q

Что такое Optional?

A

Optional в Java - это контейнерный объект, который может содержать или не содержать некоторое значение. Он был введен в Java 8 в качестве части Java API для борьбы с проблемами, связанными с null-ссылками. Optional предоставляет удобный способ обработки потенциально отсутствующих значений без необходимости явной проверки на null.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Перечислите методы Optional.

A
  1. Optional.of(value) создает Optional объект, содержащий переданное значение. Если значение null, вызывается исключение NullPointerException.
    1.1 Optional.ofNullable(value) создает Optional объект с переданным значением. Если значение null, создается пустой Optional.
  2. Optional.empty() создает пустой Optional, который не содержит значения.
  3. isPresent() возвращает true, если Optional содержит значение, и false, если он пуст.
  4. orElse(defaultValue) возвращает значение, если Optional содержит его, иначе возвращает переданное значение по умолчанию.
    4.1 orElseGet(supplier) возвращает значение, если Optional содержит его, иначе возвращает значение, полученное от переданного поставщика (Supplier).
  5. orElseThrow(exceptionSupplier) возвращает значение, если Optional содержит его, иначе выбрасывает исключение, созданное переданным поставщиком.
  6. get() возвращает значение, если Optional содержит его. Если Optional пуст, выбрасывается исключение NoSuchElementException.
  7. filter(predicate) возвращает новый Optional, содержащий значение, если оно соответствует предикату, иначе возвращает пустой Optional.
  8. map(mapper) возвращает новый Optional, содержащий результат применения функции к значению, если оно присутствует. Если Optional пуст, возвращается пустой Optional.
  9. flatMap(mapper) аналогичен map, но позволяет возвращать Optional из функции-маппера.
  10. ifPresent(consumer) выполняет переданный потребителю (Consumer) код, если Optional содержит значение.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Расскажите про фабричные методы List.of, Set.of, Map.of?

A

List.of() Создает неизменяемый список с заданными элементами.
Set.of() Создает неизменяемое множество с заданными элементами.
Map.of() создает неизменяемую карту с парами ключ-значение.

Map.ofEntries() позволяет создать карту с более чем десятью парами ключ-значение.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Для чего используется var?

A

Ключевое слово var в Java введено в Java 10 и используется для объявления локальных переменных с неявным (инференсивным) типом. Это означает, что компилятор Java автоматически вычисляет тип переменной на основе значения, которое ей присваивается.

Преимущества использования var:

Краткость кода: Уменьшает количество повторяемого кода за счет уменьшения явного указания типов, что может улучшить читаемость кода.

Гибкость и поддержка изменений: Позволяет легче вносить изменения в код, так как не нужно обновлять типы переменных вручную при изменении их значения.

Однако важно использовать var с умом и в тех местах, где тип переменной легко понятен из контекста. Это обеспечивает читаемость кода и избегает создания сложных конструкций, которые могут затруднить чтение и понимание кода.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

В каких случаях можно использовать var?

A

Ключевое слово var в Java может использоваться для объявления локальных переменных в тех случаях, где тип переменной явно вытекает из контекста и может быть однозначно определен компилятором. Вот несколько типичных случаев, когда можно использовать var:

  • Инициализация при объявлении:
  • Циклы:
  • В Lambda-выражениях:
  • Возвращаемые значения методов:
  • Объявление в цепочке вызовов методов:
  • В цепочке вызовов статических методов:
  • В try-with-resources:

Важно понимать, что var не заменяет явное указание типов в тех ситуациях, где тип переменной неочевиден из контекста. Он предоставляет сокращенный и удобный синтаксис только тогда, когда тип может быть безопасно идентифицирован компилятором.

Также стоит учитывать, что использование var не рекомендуется в следующих случаях:

В ситуациях, где тип переменной неочевиден или может вызвать путаницу.
При объявлении полей класса, параметров методов, возвращаемых типов методов и массивов.
В ситуациях, где тип переменной изменяется после ее инициализации.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly