Junior
Ифодаҳои lambda дар Java чистанд?
sobes.tech AI
Ҷавоб аз AI
Ифодаи lambda дар Java кӯтоҳтарин роҳи намояндагии функсияҳои номаълум (функсияҳо бе ном). Онҳо барои эҷоди намунаҳои интерфейсҳои функсионалӣ истифода мешаванд.
Компонентҳои асосӣ:
- Листи параметрҳо: Қасрҳои
()листи параметрҳоро дар бар мегиранд. Агар параметрҳо набошанд, қасрҳои холӣ истифода мешаванд. - Суръат
->: Листи параметрҳоро аз бадани lambda ҷудо мекунад. - Бадани: Мумкин аст як изҳороти ягона ё блоки коди дар дохили қасрҳо
{}бошад.
Масалан бе параметр:
// Интерфейси функсионалӣ
@FunctionalInterface
interface Greeting {
void sayHello();
}
// Истифодаи ифодаи lambda
Greeting greeting = () -> System.out.println("Hello, World!");
Масалан бо параметр:
// Интерфейси функсионалӣ
@FunctionalInterface
interface MathOperation {
int operate(int a, int b);
}
// Истифодаи ифодаи lambda
MathOperation addition = (a, b) -> a + b;
MathOperation subtraction = (a, b) -> {
return a - b;
};
Фоидаҳо:
- Кӯтоҳ: Миқдори коди boilerplate-ро кам мекунад.
- Ҳайратангез: Бо API Stream барои коркарди коллексияҳо истифода мешавад.
- Барномаи функсионалӣ: Элементҳои барномаи функсионалӣ дар Java-ро дастгирӣ мекунад.
Маҳдудиятҳо:
- танҳо бо интерфейсҳои функсионалӣ (интерфейсҳо бо як усули абстрактӣ) истифода бурда мешавад.
- набояд ҳолат дошта бошад (яъне, тағир додани тағирёбандаҳо дар беруни контексти худ, агар ин тағирёбандаҳо ба таври равшан ҳамчун final ё эффектӣ final эълон нашаванд).
Ифодаҳои lambda дар Java 8 ворид карда шуданд.