Language Начинающий

От анонимных классов к лямбда-выражениям и ссылкам на методы

Замените анонимные классы с одним методом лаконичными лямбда-выражениями и ссылками на методы.

✕ Anonymous class
button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent event) {
        save(event);
    }
});
✓ Java 8+
button.addActionListener(this::save);
Заметили проблему в этом коде? Сообщите нам.
⚡

Меньше шаблонного кода

Устраняет объявление класса и формальное переопределение метода.

👁

Лучшая читаемость

Сосредоточивает внимание на выполняемой операции.

🔒

Та же типобезопасность

Компилятор проверяет сигнатуру целевого функционального интерфейса.

Старый подход
Анонимный класс
Современный подход
Ссылка на метод
Начиная с JDK
8
Сложность
Начинающий
От анонимных классов к лямбда-выражениям и ссылкам на методы
Доступно

Доступно начиная с JDK 8 (март 2014).

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