دروس جافا

جافا هوم جافا مقدمة ابدأ جافا بناء جملة جافا تعليقات جافا متغيرات جافا أنواع بيانات جافا جافا نوع الصب مشغلي جافا سلاسل جافا جافا الرياضيات جافا المنطقية جافا إذا ... آخر تبديل جافا جافا أثناء التكرار جافا للحلقة جافا بريك / متابعة جافا المصفوفات

طرق جافا

طرق جافا معلمات طريقة جافا طريقة جافا التحميل الزائد نطاق جافا العودية جافا

فئات جافا

جافا OOP فئات / كائنات جافا سمات فئة Java طرق فئة جافا منشئو جافا معدِّلات جافا تغليف جافا حزم جافا / API الوراثة جافا جافا تعدد الأشكال فئات جافا الداخلية جافا التجريد واجهة جافا جافا Enums مدخلات مستخدم جافا تاريخ جافا جافا ArrayList جافا لينكدليست جافا HashMap جافا هاشسيت جافا التكرار فئات Java Wrapper استثناءات Java جافا RegEx خيوط جافا جافا لامدا

معالجة ملفات جافا

ملفات جافا جافا إنشاء / كتابة الملفات ملفات قراءة جافا جافا حذف الملفات

جافا كيف

أضف عددين

مرجع جافا

كلمات جافا طرق سلسلة جافا طرق جافا للرياضيات

أمثلة جافا

أمثلة جافا مترجم جافا تمارين جافا مسابقة جافا شهادة جافا


تعبيرات جافا لامدا


تعبيرات جافا لامدا

تمت إضافة تعبيرات Lambda في Java 8.

تعبير lambda عبارة عن كتلة قصيرة من التعليمات البرمجية تأخذ المعلمات وتعيد قيمة. تتشابه تعبيرات Lambda مع الأساليب ، لكنها لا تحتاج إلى اسم ويمكن تنفيذها في جسم الطريقة مباشرةً.


بناء الجملة

يحتوي أبسط تعبير لامدا على معامل واحد وتعبير:

parameter -> expression

لاستخدام أكثر من معلمة ، قم بلفها بين قوسين:

(parameter1, parameter2) -> expression

التعبيرات محدودة. يجب عليهم إرجاع قيمة على الفور ، ولا يمكن أن تحتوي على متغيرات أو تعيينات أو عبارات مثل ifأو for. من أجل القيام بعمليات أكثر تعقيدًا ، يمكن استخدام كتلة التعليمات البرمجية مع الأقواس المتعرجة. إذا احتاج تعبير lambda إلى إرجاع قيمة ، فيجب أن تحتوي كتلة التعليمات البرمجية على returnعبارة.

(parameter1, parameter2) -> { code block }

استخدام تعبيرات لامدا

عادةً ما يتم تمرير تعبيرات Lambda كمعلمات إلى دالة:

مثال

استخدم تعبير لامبا في طريقة ArrayList's forEach()لطباعة كل عنصر في القائمة:

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    numbers.forEach( (n) -> { System.out.println(n); } );
  }
}

يمكن تخزين تعبيرات Lambda في متغيرات إذا كان نوع المتغير واجهة لها طريقة واحدة فقط. يجب أن يحتوي تعبير lambda على نفس عدد المعلمات ونفس نوع الإرجاع مثل تلك الطريقة. تحتوي Java على العديد من هذه الأنواع من الواجهات المضمنة ، مثل Consumerالواجهة (الموجودة في java.utilالحزمة) التي تستخدمها القوائم.

مثال

استخدم واجهة Java Consumerلتخزين تعبير lambda في متغير:

import java.util.ArrayList;
import java.util.function.Consumer;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    Consumer<Integer> method = (n) -> { System.out.println(n); };
    numbers.forEach( method );
  }
}

لاستخدام تعبير lambda في طريقة ما ، يجب أن تحتوي الطريقة على معلمة بواجهة أحادية الطريقة كنوعها. سيؤدي استدعاء طريقة الواجهة إلى تشغيل تعبير lambda:

مثال

أنشئ عملية تأخذ تعبير lambda كمعامل:

interface StringFunction {
  String run(String str);
}

public class Main {
  public static void main(String[] args) {
    StringFunction exclaim = (s) -> s + "!";
    StringFunction ask = (s) -> s + "?";
    printFormatted("Hello", exclaim);
    printFormatted("Hello", ask);
  }
  public static void printFormatted(String str, StringFunction format) {
    String result = format.run(str);
    System.out.println(result);
  }
}