Главная страница
Навигация по странице:

  • Какой аннотацией помечается функциональный интерфейс

  • Может ли функциональный интерфейс содержать что-то кроме абстрактного метода Что такое default методы

  • Где находятся функциональные интерфейсы

  • Основные типы функциональных интерфейсов.

  • Расскажите про Comparator и Comparable

  • Какие есть способы инстанцировать функциональные интерфейсы

  • Отличие BinaryOperator от Function

  • Все способы реализации функционального интерфейса

  • Императивный vs декларативный подход.

  • Функциональное программирование- плюсы минусы, где применяется.

  • Блок Примитивные типы


    Скачать 6.67 Mb.
    НазваниеБлок Примитивные типы
    АнкорJava Core
    Дата19.04.2022
    Размер6.67 Mb.
    Формат файлаdocx
    Имя файлаJava Core.docx
    ТипДокументы
    #485860
    страница9 из 9
    1   2   3   4   5   6   7   8   9
    Что такое функциональные интерфейсы? Для чего нужны?

    Функциональный интерфейс в Java – это интерфейс, который содержит только 1 абстрактный метод. Основное назначение – использование в лямбда-выражениях и ссылках на методы.


    1. Какой аннотацией помечается функциональный интерфейс?

    Предназначение @FunctionalInterface — сообщить компилятору, что данный интерфейс функциональный и должен содержать не более одного метода. Если же в интерфейсе с данной аннотацией более одного не реализованного (абстрактного) метода, компилятор не пропустит данный интерфейс, так как будет воспринимать его как ошибочный код. Интерфейсы и без данной аннотации могут считаться функциональными и будут работать, а @FunctionalInterface является не более чем дополнительной страховкой.


    1. Может ли функциональный интерфейс содержать что-то кроме абстрактного метода? Что такое default методы?

    Функциональный интерфейс может содержать любое количество методов по умолчанию (default) или статических методов.

    default – реализованные методы в функциональных интерфейсах. При наследовании интерфейса можно переопределить эти методы или же оставить всё как есть (оставить логику по умолчанию).

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


    1. Где находятся функциональные интерфейсы?

    Многие функциональные интерфейсы, предоставляемые Java8, находятся в пакете java.util.function.


    1. Сколько дефолтных методов и статических методов, статических полей в функциональном интерфейсе?

    Ограничений по количеству методов и полей в функциональном интерфейсе нет (кроме абстрактного метода).


    1. Основные типы функциональных интерфейсов.

    Predicate — функциональный интерфейс для проверки соблюдения некоторого условия. Если условие соблюдается, возвращает true, иначе — false. Содержит метод boolean test(T t).

    Consumer (с англ. — “потребитель”) — принимает в качестве входного аргумента объект типа T, совершает некоторые действия, но при этом ничего не возвращает. Содержит метод void accept(T t).

    Supplier (с англ. — поставщик) — не принимает никаких аргументов, но возвращает некоторый объект типа T. Содержит метод T get().

    Function—принимает аргумент T и приводит его к объекту типа R, который и возвращается как результат. Содержит метод R apply(T t); Может возвращать и объект того же типа, какой принимает.

    UnaryOperator — принимает в качестве параметра объект типа T, выполняет над ним некоторые операции и возвращает результат операций в виде объекта того же типа T. Содержит метод T apply(T t).

    BinaryOperator — принимает в качестве параметра два объекта типа T, выполняет над ними бинарную операцию и возвращает ее результат также в виде объекта типа T. Содержит метод T apply(T t1, T t2).


    1. Расскажите про Comparator и Comparable?

    Интерфейс Comparable используется только для сравнения объектов класса, в котором данный интерфейс реализован. Т.е. interface Comparable определяет логику сравнения объекта определенного ссылочного типа внутри своей реализации (по правилам разработчика).

    Comparator представляет отдельную реализацию и ее можно использовать многократно и с различными классами. Т.е. interface Comparator позволяет создавать объекты, которые будут управлять процессом сравнения (например, при сортировках).


    1. Какие есть способы инстанцировать функциональные интерфейсы?

    - создать экземпляр анонимного или именованного класса, реализующего интерфейс Function;

    - воспользоваться ссылкой на метод;

    - написать лямбда-выражение;


    1. Отличие BinaryOperator от Function

    Function(функция) используется для преобразования входного параметра или в двух параметров (для BiFunction) в какое-либо значение, тип значение может не совпадать с типом входных параметров.

    BinaryOperator это разновидность Function, в которых входные и выходные обобщенные параметры должны совпадать. Если заглянуть в пакет java.util.function, то можно заметить, что UnaryOperator расширяет Function, а BinaryOperator расширяет BiFunction.


    1. Все способы реализации функционального интерфейса?

    В Java 8 функциональные интерфейсы могут быть представлены с использованием лямбда-выражений, ссылок на методы и ссылок на конструкторы.


    1. Императивный vs декларативный подход.

    Декларативное программирование - парадигма программирования, в которой задаётся спецификация решения задачи, то есть описывается ожидаемый результат, а не способ его получения.

    Императивное программирование — это парадигма программирования, в которой задаётся последовательность действий, необходимых для получения результата.

    Декларативный стиль

    Такой стиль, в котором вы описываете, какой именно результат вам нужен. И получатель такого сообщения уже сам разбирается, какие шаги для этого надо предпринять.


    1. Функциональное программирование- плюсы минусы, где применяется.

    Функциональное программирование помогает сделать код более понятным, предсказуемым и легким для чтения. Использование принципов функционального программирования помогает избавиться от ненужных абстракций с непредсказуемым поведением, поэтому сделать программу более предсказуемой и уменьшить количество возможных ошибок. ООП-подход подразумевает написание базовых классов и расширение существующих путем добавления к ним методов. Данные хранятся в экземпляре класса вместе с методами, которые ими оперируют. Функции в ООП зависят от внешних данных (например, содержат внутри себя ссылки на глобальные переменные) или коммуницируют с внешним миром (ввод-вывод). В отличие от ООП, функциональное программирование характеризуется слабой связью функции с данными, которыми она оперирует. Это позволяет избежать побочных эффектов при выполнении функций — например чтения и изменения глобальных переменных, операций ввода-вывода и так далее. Детерминированные функции ФП возвращают один и тот же результат для одних и тех же аргументов. Самое большое преимущество функционального программирования-краткость, потому что код может быть более кратким. Функциональная программа не создает переменную итератора в качестве центра цикла, поэтому этот и другие виды накладных расходов исключаются из вашего кода. Другим важным преимуществом является параллелизм, что легче сделать с функциональным программированием, поскольку компилятор заботится о большинстве операций, которые раньше требовали ручной настройки переменных состояния (например, итератора в цикле).
    1   2   3   4   5   6   7   8   9


    написать администратору сайта