Lambda - это новая программная конструкция, которая позволяет создавать приложения Java в совершенно другой парадигме. Это руководство будет охватывать Java 8 Lambda, и вам потребуются предварительные знания о программировании на Java и опыт кодирования в предыдущих версиях Java. Это может быть J ava 6 или Java 7.
Для демонстрации я использовал IDE NetBeans.
Здесь мы сосредоточимся только на Java 8 в этом руководстве и, в частности, на функциях Lambda в Java 8.
Вот обзор этой серии руководств.
- Понимание лямбд.
- Используя лямбды.
- Функциональные интерфейсы.
- Ссылки на методы.
- Улучшения коллекций.
Почему лямбды?
Большинство разработчиков используют лямбда-выражения для реализации по следующим причинам:
- Обеспечивает функциональное программирование
- Читаемый и лаконичный код
- Более простые в использовании API и библиотеки
- Включает поддержку параллельной обработки
Функциональное программирование и объектно-ориентированное программирование
Мы используем объектно-ориентированное программирование уже много лет. Этого достаточно? Почему мы используем функциональное программирование? В объектно-ориентированном программировании мы используем миллионы строк кода. Вы можете делать на Java практически все, используя только объектно-ориентированное программирование. Таким образом, функциональное программирование позволяет писать более читаемый и поддерживаемый код. Функциональное программирование - это еще одна парадигма программирования, которая позволяет писать код в определенных ситуациях. Это похоже на еще один инструмент в вашем наборе инструментов, который можно использовать в определенных ситуациях.
В ООП практически все является объектом. У вас не может быть логики или функциональности, которые существуют изолированно. Он должен быть частью класса или объекта. Все блоки кода связаны с классами и объектами.
Позвольте мне показать этот пример.
Если я выполню это, я должен получить печать Hello World в консоли.
Метод печати печатает Hello World. Теперь я хочу, чтобы он принимал участие и делал разные вещи в зависимости от ввода. Этот метод печати принимает аргумент, и этот аргумент позволяет методу печати знать, что делать. Один из способов сделать это - написать метод печати со всеми возможными комбинациями всего, что он может делать, и использовать входной аргумент в качестве переключателя. Но это нехорошо. Вы можете передать поведение в качестве аргумента, и метод печати просто принимает это поведение и выполняет его. Один из способов сделать это в Java 7 - создать класс или интерфейс с именем Print, который состоит из метода выполнения. И вы передаете методу печати экземпляр этого интерфейса печати.
Интерфейс печати здесь.
package lambdatutorial; /** * * @author Kasun Dissanayake */ public interface Print { public void perform(); }
Реализация Интерфейса печати здесь. Он просто печатает приветствие на консоли.
package lambdatutorial; /** * * @author Kasun Dissanayake */ public class PrintPerform implements Print { @Override public void perform() { System.out.println("Welcome..."); } }
Главный класс здесь. Вам просто нужно создать экземпляр класса PrintPerform и передать его методу печати в классе LambdaTutorial.
package lambdatutorial; /** * * @author Kasun Dissanayake */ public class LambdaTutorial { public void print(Print print){ print.perform(); } public static void main(String[] args) { LambdaTutorial lambdaTutorial = new LambdaTutorial(); PrintPerform printperform = new PrintPerform(); lambdaTutorial.print(printperform); } }
Теперь запустим основной класс. Вы получите этот результат.
Здесь я передаю поведение методу печати. Я могу легко создать новую реализацию интерфейса печати и легко изменить код. Это классическое объектно-ориентированное программирование.
Но здесь пришлось потрудиться. Вы не просто передаете поведение. Мы передаем объект, у которого есть поведение (здесь мы передаем Print, у которого есть метод execute). Но нам нужно передать просто действие. И выполняем действие.
Настройка Lambda для достижения этих целей. Lambda позволяет вам создавать эти сущности, которые являются просто функциями. Они называются лямбда-выражениями. Они не принадлежат к классу. Это просто функции, которые существуют изолированно. Мы узнаем больше о лямбда-выражениях в следующем уроке.
Благодарю вас!