Повне керівництво по лямбда-виразів і функціональним інтерфейсів в java 8, програмування на

Java завжди була об'єктно-орієнтованою мовою програмування. А це означає, що все обертається навколо об'єктів (за винятком деяких примітивних типів). Будь-які методи і функції в Java є частиною класу, тому ми повинні використовувати клас / об'єкт для виклику будь-якої функції. Так що ж в цей гармонійний світ привнесла Java 8?

Але об'єктно-орієнтованість мови не є його недоліком, однак тягне за собою написання багато службового коду. Наприклад, нам треба створити екземпляр Runnable. Зазвичай в Java ми робимо це за допомогою анонімних класів, як показано нижче:

Зверніть увагу, нам потрібно лише те, що знаходиться всередині методу run (). Решта код є лише описовою частиною, особливістю написання коду на Java.

Що пропонує нам Java 8?

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

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

Інтерфейс з одним абстрактним методом називається функціональним інтерфейсом. Щоб відзначити інтерфейс як функціональний, використовується анотація @FunctionalInterface. Вона не є обов'язковою, але її використання вважається хорошим тоном програмування на Java 8. Також ця анотація допомагає уникнути випадкового додавання додаткових методів.

Основною перевагою функціонального інтерфейсу є те, що ми можемо використовувати лямбда-вирази для створення екземпляра і, як наслідок, уникнути використання громіздких реалізацій анонімного класу.

Кращим прикладом функціонального інтерфейсу є інтерфейс java.lang.Runnable з одним абстрактним методом r un ().

А тепер давайте розглянемо деякі рекомендації по використанню функціональних інтерфейсів: