Lambda
التعبير اللامي Lambda Lambda
Lambda تعبير دالي قصير بلا اسم — بديلanonymous class مع الواجهات الدالية.
Lambda تعبير يُعرّف دالة inline بدون اسم صنف. يعمل فقط مع الواجهات الدالية (واجهة بدالة مجرّدة واحدة). الصيغة: (parameters) -> expression أو (parameters) -> { statements }.
الصياغة
() -> expression
(param) -> expression
(p1, p2) -> { statements; return value; }📄 مثال
import java.util.function.*;
// بسيطة:
Runnable task = () -> System.out.println("يعمل");
Function<String, Integer> len = s -> s.length();
BiFunction<Integer, Integer, Integer> add = (a, b) -> a + b;
// استخدام:
System.out.println(len.apply("مرحبًا")); // 6
System.out.println(add.apply(3, 4)); // 7
// مع المجموعات:
List<String> names = List.of("أ", "ب", "ج", "د");
names.forEach(n -> System.out.println(n));
List<String> sorted = names.stream()
.sorted(Comparator.comparingInt(String::length))
.toList();أهم النقاط
| العنصر | الوظيفة |
|---|---|
| () -> expr | بدون معاملات |
| x -> expr | معامل واحد بدون أقواس |
| (a, b) -> expr | معدّل معاملات |
| (a, b) -> { return expr; } | كتلة مع return صريح |
💡 نصائح عملية
- استخدم @FunctionalInterface للتأكد أن الواجهة تصلح لـ lambda
- Lambda أقصر بكثير من anonymous class — استخدمها عند الإمكان
⚠️ أخطاء شائعة
- nxing lambda مع واجهة فيها عدة دوال مجرّدة — خطأ ترجمة
- nxing return صريح داخل lambda بسيط (بدون أقواس): x -> return x+1; خطأ
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVA الكامل بالعربي.