От анонимных классов к лямбда-выражениям и ссылкам на методы
Замените анонимные классы с одним методом лаконичными лямбда-выражениями и ссылками на методы.
Сравнение кода
✕ Anonymous class
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
save(event);
}
});
✓ Java 8+
button.addActionListener(this::save);
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Меньше шаблонного кода
Устраняет объявление класса и формальное переопределение метода.
Лучшая читаемость
Сосредоточивает внимание на выполняемой операции.
Та же типобезопасность
Компилятор проверяет сигнатуру целевого функционального интерфейса.
Старый подход
Анонимный класс
Современный подход
Ссылка на метод
Начиная с JDK
8
Сложность
Начинающий
Поддержка JDK
От анонимных классов к лямбда-выражениям и ссылкам на методы
Доступно
Доступно начиная с JDK 8 (март 2014).
Как это работает
Функциональные интерфейсы можно реализовывать с помощью лямбда-выражений или ссылок на методы. Это устраняет шаблонный код анонимного класса, сохраняя статическую типизацию и тот же контракт обратного вызова.
Связанная документация
Доказательство