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

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

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

  • Что такое default методы

  • Как вызывать default метод интерфейса в реализующем этот интерфейс классе

  • Что такое static

  • Как вызывать static метод интерфейса

  • Ревью 7. Ревью 7 - Функциональные Интерфейсы, Streams. Чем является Stream в контексте Java 3 Для чего нужен 3


    Скачать 84.11 Kb.
    НазваниеЧем является Stream в контексте Java 3 Для чего нужен 3
    АнкорРевью 7
    Дата19.01.2023
    Размер84.11 Kb.
    Формат файлаdocx
    Имя файлаРевью 7 - Функциональные Интерфейсы, Streams.docx
    ТипДокументы
    #894719
    страница8 из 9
    1   2   3   4   5   6   7   8   9

    Функциональные интерфейсы

    Что такое функциональные интерфейсы? Для чего нужны?


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

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


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

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


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

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

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

    Что такое default методы?


    Java 8 позволяет добавлять неабстрактные реализации методов в интерфейс, используя ключевое слово default:

    interface Example {

    int process(int a);

    default void show() {

    System.out.println("default show()");

    }

    }

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

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

    Метод по умолчанию не может переопределить метод класса java.lang.Object.

    Помогают реализовывать интерфейсы без страха нарушить работу других классов.

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

    Дают свободу классам выбрать метод, который нужно переопределить.

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

    Как вызывать default метод интерфейса в реализующем этот интерфейс классе?


    Используя ключевое слово super вместе с именем интерфейса:

    interface Paper {

    default void show() {

    System.out.println("default show()");

    }

    }

    class Licence implements Paper {

    public void show() {

    Paper.super.show();

    }

    }

    Что такое static метод интерфейса?


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

    Статические методы в интерфейсе являются частью интерфейса без возможности переопределить их для объектов класса реализации;

    Методы класса java.lang.Object нельзя переопределить как статические;

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

    Как вызывать static метод интерфейса?


    Используя имя интерфейса:

    interface Paper {

    static void show() {

    System.out.println("static show()");

    }

    }

    class Licence {

    public void showPaper() {

    Paper.show();

    }

    }
    1   2   3   4   5   6   7   8   9


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