Как да използвате ламбда изрази в Java

Как да използвате ламбда изрази в Java

Ламбда изразите, въведени в Java 8, са мощни функции, които ви позволяват да пишете по-кратки, по-изразителни и по-гъвкави кодове. Те предоставят функционален подход към програмирането, като ви позволяват да предавате и връщате блокове код като обикновени стойности. Чрез премахването на необходимостта от дефиниране на анонимни вътрешни класове, ламбда изразите опростяват кода и подобряват четливостта.

Ламбда изразите са анонимни функции, които се състоят от формален параметър списък, символа -> и тялото на израза. Формалният параметър списък е заключен в кръгли скоби, а тялото на израза е заключено в къдрави скоби. Например, следният ламбда израз добавя две числа:

java
(a, b) -> a + b

Сравнете го с еквивалентния анонимен вътрешен клас:

java
new BinaryOperator<Integer>() {
@Override
public Integer apply(Integer a, Integer b) {
return a + b;
}
};

Както можете да видите, ламбда изразите са много по-кратки и по-изразителни от анонимните вътрешни класове.

Предимства на ламбда изразите

Ламбда изразите предлагат следните предимства:

* По-кратък и по-изразителен код: Ламбда изразите премахват необходимостта от дефиниране на анонимни вътрешни класове, което води до по-кратък и по-изразителен код.
* Подобрена четливост: Чрез премахването на шума от кода, ламбда изразите правят кода по-лесен за четене и разбиране.
* Функционално програмиране: Ламбда изразите ви позволяват да пишете функционален код в Java, което насърчава по-декларативен и композиционен подход към програмирането.
* По-гъвкав код: Ламбда изразите могат да се предават като аргументи на методи, връщани от методи и съхранявани в променливи, което прави кода по-гъвкав и повторно използваем.

  Какво е „нападение“ в мултиплейър онлайн видео игри?

Синтаксис на ламбда изразите

Синтаксисът на ламбда изразите е както следва:


(формален параметър списък) -> { тяло на израза }

* Формален параметър списък: Формалният параметър списък е списък на имената на параметрите, разделени със запетая. Ако има само един параметър, той може да бъде заключен в скоби.
* Символът ->: Символът -> отделя формалния параметър списък от тялото на израза.
* Тяло на израза: Тялото на израза е кодът, който трябва да се изпълни от ламбда израза. Той може да бъде един израз или блок от кодове, включени в къдрави скоби.

Следният пример показва ламбда израз, който приема един параметър (x) и връща неговия квадрат:

java
(x) -> x * x

Видове ламбда изрази

Има три вида ламбда изрази:

* Изрази без тяло: Тези ламбда изрази се състоят само от един израз. Типът връщане се извежда от типа на израза.

  Как да премахнете акаунт от Chromebook

java
(x) -> x + 1

* Изрази с един ред: Тези ламбда изрази се състоят от един ред код, затворен в къдрави скоби. Типът връщане трябва да бъде зададен изрично.

java
(x) -> {
int y = x + 1;
return y;
}

* Изрази с няколко реда: Тези ламбда изрази се състоят от няколко реда код, затворени в къдрави скоби. Типът връщане трябва да бъде зададен изрично.

java
(x) -> {
if (x > 0) {
return 1;
} else {
return -1;
}
}

Съвместимост на типове данни

Параметрите и връщаните типове на ламбда изразите трябва да бъдат съвместими с функционалния интерфейс, към който са присвоени. Функционалните интерфейси са интерфейси, които имат само един абстрактен метод. Типът връщане и параметрите на един ламбда израз трябва да съответстват на типа връщане и параметрите на единствения абстрактен метод на функционалния интерфейс.

Следващият пример показва ламбда израз, присвоен на функционален интерфейс BinaryOperator<Integer>:

java
BinaryOperator<Integer> adder = (a, b) -> a + b;

Заключение

Ламбда изразите са мощни функции, които подобряват четливостта, изразителността и гъвкавостта на кода на Java. Те опростяват предаването на функционалност като стойности, което води до по-модулен и композиционен код. Чрез прегръщане на функционалния подход, ламбда изразите ще ви помогнат да пишете по-ефективен и елегантен код на Java.

  16 най-добри независими игри за игра през 2023 г

Често задавани въпроси

1. Какво е ламбда израз в Java?
Ламбда изразът е анонимна функция, която може да бъде предавана, връщана и съхранявана като стойност.

2. Какви са предимствата на ламбда изразите?
Ламбда изразите са по-кратки, по-изразителни, по-гъвкави и подобряват четливостта на кода.

3. Какъв е синтаксисът на един ламбда израз?
(формален параметър списък) -> { тяло на израза }

4. Колко вида ламбда изрази има?
Три: изрази без тяло, изрази с един ред и изрази с няколко реда.

5. Каква е разликата между функционален интерфейс и ламбда израз?
Функционалният интерфейс е интерфейс с един абстрактен метод, докато ламбда изразът е анонимна функция.

6. Трябва ли типът връщане на един ламбда израз да бъде изрично дефиниран?
Да, типът връщане трябва да бъде изрично дефиниран за изрази с един и няколко реда.

7. Как мога да предам ламбда израз като аргумент на метод?
Просто задайте ламбда израза на параметъра на метода, който е от типа функционален интерфейс.

8. Как да върна ламбда израз от метод?
Задайте типа връщане на метода на функционален интерфейс и върнете ламбда израза.

9. Мога ли да съхраня ламбда израз в променлива?
Да, можете да съхранявате ламбда израз в променлива от типа функционален интерфейс.

10. Защо да използвам ламбда изрази?
Ламбда изразите ви позволяват да пишете по-кратък, по-изразителен и по-гъвкав код.