Skip to content

Latest commit

 

History

History
34 lines (24 loc) · 3.29 KB

File metadata and controls

34 lines (24 loc) · 3.29 KB

Java 1.8

Лямбда Функції

Лямбда функція - анонімна функція, яка реалізує функціональний інтерфейс. Тобто може використовуватись тільки як реалізація того чи іншого функціонального інтерфейсу. Лямбда функції ввели для того, щоб скоротити кількість коду. Також можна використовувати лямбда функції для реалізації узагальнених функціональних інтерфейсів.

Синатксис - (PARAMETER) -> text.methodName();, де (PARAMETER) - параметр, або набір параметрів, -> - лямбда оператор, text.methodName() тіло функції.

Обмеження лямбда функцій

  • не можна оголошувати статичні змінні і класи скрім констант static final
  • не можна оголошувати інтерфейс
  • не можна оголошувати enum

Синтаксис () -> new TestBrokenException() еквівалентно TestBrokenException::new. Де :: - оператор посилання на метод.


Optional

Optional - клас обгортка для значеннь які зокрема можуть безпечно приймати null. Використовується для зменшення кількості коду та збільшенню надійності при роботі з null. Клас Optional використовується у випадках, коли метод може повернути посилання зі значенням null, що в свою чергу може призвести до NPE. Класичне застосування - задача пошуку (це дає змогу вияснити що потрібно повернути, коли результатів немає).

  • Основні методи які використовуються найчастіше: isPresent() і get().
  • Optional може повертати об'єкт за замовчуванням за допомогою методів T orElse(T other), або T orElseGet(Supplier <? extends T> supplier).
  • Щоб згенерувати виключення, замість тього щоб обгортати метод в try/catch можна використати методи orElseThrow(Supplier <? extends t> exceptionSupplier) для jdk 1.8, orElseThrow() для jdk 1.11.
  • Для перетворення значеннь які містяться в об'єкті класу optional можна використовувати методи filter(), map(), flatMap() і or().
  • Optional містить метод stream(), Stream API власне є складовою Optional.

Варто застосовувати Optional

  • Методи пошуку
  • Методи отримання об'єкту
  • Якщо метод може містити множинні параметри null

НЕ варто використовувати Optional

  • В якості полів класу (не серіалізується)