O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Java 8 lambda expression

631 visualizações

Publicada em

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

Publicada em: Software

Java 8 lambda expression

  1. 1. By : Rabei Dogho • Technical Diploma in Computer Engineering techniques with 96.29 rate • 2nd year Computer and Automatic Control Engineering – Tishreen University JAVA 8 Lambda Expression Spring Workshop 2015 - Java 8 Lambda Expression1 Basic Concepts …
  2. 2. Contents: Spring Workshop 2015 - Java 8 Lambda Expression2  Preface ………………….…………….……….. 3  What is a Lambda Expression ...................... 4  Lambda Parameters ………………………… 5  Lambda Body…………………………………. 6  Lambda Expression Examples……………… 7  Functional Interface ………………………… 11  Functional interface in JAVA 8 …………… 13  The Type of Lambda Expression ................. 15  Lambda Expression Examples ( Runnable Lambda , Listener Lambda ) ……………… 16
  3. 3. Preface … Spring Workshop 2015 - Java 8 Lambda Expression3 ‫العد‬ ‫في‬ ‫تستخدم‬ ‫و‬ ‫االسم‬ ‫مجهولة‬ ‫توابع‬ ‫عن‬ ‫عبارة‬ ‫هي‬ ‫الالمبدا‬ ‫تعابير‬‫من‬ ‫يد‬ ‫ال‬ ‫مثل‬ ‫البرمجية‬ ‫اللغات‬{ C# , C++ , JavaScript , PHP , Ruby , VisualBasic.NET V9 } ‫ال‬ ‫إصدار‬ ‫مع‬ ‫الجافا‬ ‫في‬ ‫ممكنا‬ ‫استخدامها‬ ‫أصبح‬JAVA 8(JDK 8). ‫تستخدم‬‫أجل‬ ‫من‬ ‫شائع‬ ‫بشكل‬Functional Programming‫و‬‫من‬ ‫تورث‬ (Functional Interface)«‫الوظيفية‬ ‫الواجهات‬»‫فكرة‬ ‫شرح‬ ‫يتم‬ ‫سوف‬ ‫و‬ ‫عنها‬ ‫مبسطة‬‫في‬ ‫بل‬ ‫أقصر‬ ‫أكواد‬ ‫كتابة‬ ‫في‬ ‫فقط‬ ‫ليس‬ ‫تساعدك‬ ‫التي‬‫إضفاء‬ ‫التوابع‬ ‫و‬ ‫األغراض‬ ‫بتصميم‬ ‫التفكير‬ ‫في‬ ‫الوضوح‬ ‫من‬ ‫المزيد‬.
  4. 4. What is a Lambda Expression ? Spring Workshop 2015 - Java 8 Lambda Expression4 ‫ماهي‬Lambda Expression‫؟؟؟‬ ‫طريقة‬ ‫هي‬Method‫وصول‬ ‫معرف‬ ‫دون‬ ‫من‬. ‫المعادة‬ ‫القيمة‬ ‫نمط‬ ‫تحديد‬ ‫دون‬ ‫من‬ ‫طريقة‬ ‫هي‬. ‫اسم‬ ‫دون‬ ‫من‬ ‫طريقة‬ ‫أنها‬ ‫كما‬. •‫ال‬Lambda Expression‫ال‬ ‫قوة‬ ‫نقطة‬ ‫هي‬Anonymous Inner Class‫يحل‬ ‫هذا‬ ‫و‬ ‫واحدة‬ ‫تعليمة‬ ‫إلى‬ ‫برمجية‬ ‫أسطر‬ ‫عدة‬ ‫بتحويل‬ ‫ذلك‬ ‫و‬ ‫ال‬ ‫بسبب‬ ‫تواجهنا‬ ‫التي‬ ‫العمودية‬ ‫المشكلة‬Inner class‫بساطة‬ ‫أكثر‬ ‫أفقي‬ ‫بحل‬. •‫ال‬Lambda Expression‫أجزاء‬ ‫ثالثة‬ ‫من‬ ‫تتألف‬: ‫الجسم‬‫السهم‬ ‫رمز‬‫الوسطاء‬ ‫الئحة‬ (int x , int y) -> x+y
  5. 5. Spring Workshop 2015 - Java 8 Lambda Expression5 ‫الوسطاء‬: o‫فاصلة‬ ‫بواسطة‬ ‫بينها‬ ‫يفصل‬ ‫و‬ ‫قوسين‬ ‫بين‬ ‫الوسطاء‬ ‫توضع‬. o‫تستقبل‬ ‫أن‬ ‫يمكن‬Lambda Expression‫الوسطاء‬ ‫من‬ ‫عدد‬ ‫أي‬. o‫ض‬ ‫من‬ ‫تلقائيا‬ ‫يستنتج‬ ‫أن‬ ‫أو‬ ‫بوضوح‬ ‫يصرح‬ ‫أن‬ ‫يمكن‬ ‫الوسطاء‬ ‫نمط‬‫من‬ ‫البرمجي‬ ‫المقطع‬ ‫سياق‬. o‫فار‬ ‫قوسين‬ ‫بواسطة‬ ‫ذلك‬ ‫يمكنك‬ ‫فارغة‬ ‫وسطاء‬ ‫الئحة‬ ‫تقديم‬ ‫أردت‬ ‫إذا‬‫غين‬. o‫اس‬ ‫إلزاميا‬ ‫ليس‬ ‫السياق‬ ‫ضمن‬ ‫من‬ ‫يستنتج‬ ‫واحد‬ ‫وسيط‬ ‫نوع‬ ‫وجود‬ ‫عند‬‫تخدام‬ ‫األقواس‬. Lambda Parameters :
  6. 6. Spring Workshop 2015 - Java 8 Lambda Expression6 ‫التعبير‬ ‫جسم‬: o‫جسم‬Lambda Expression‫من‬ ‫عدد‬ ‫أي‬ ‫على‬ ‫يحتوي‬ ‫أن‬ ‫يمكن‬ ‫التعليمات‬. o‫الكتلة‬ ‫قوسا‬ ‫واحدة‬ ‫تعليمة‬ ‫هناك‬ ‫يكون‬ ‫عندما‬}{‫نمط‬ ‫و‬ ‫ضروريان‬ ‫غير‬ ‫ال‬ ‫بواسطة‬ ‫المقدمة‬ ‫المجهولة‬ ‫للتوابع‬ ‫اإلعادة‬Lambda Expression‫هو‬ ‫بإعادته‬ ‫التعبير‬ ‫جسم‬ ‫يقوم‬ ‫ما‬ ‫نفسه‬. o‫النوع‬ ‫من‬ ‫أنه‬ ‫تلقائيا‬ ‫يستنتج‬ ‫شيئا‬ ‫التعبير‬ ‫يعيد‬ ‫ال‬ ‫عندما‬void. obreak‫و‬continue‫التعب‬ ‫جسم‬ ‫في‬ ‫الحلقات‬ ‫ضمن‬ ‫االستخدام‬ ‫مسموحتا‬‫ير‬. o‫تحكم‬ ‫مسار‬ ‫فكل‬ ‫قيمة‬ ‫يعيد‬ ‫الجسم‬ ‫كان‬ ‫إذا‬(‫الشرطية‬ ‫المسارات‬)‫يج‬‫أن‬ ‫ب‬ ‫إستثناء‬ ‫يرمي‬ ‫أن‬ ‫أو‬ ‫ما‬ ‫قيمة‬ ‫يعيد‬(throw exception) Lambda Body :
  7. 7. Lambda Expression Examples: Spring Workshop 2015 - Java 8 Lambda Expression7 ‫متفرقة‬ ‫أمثلة‬: 1) n -> n%2!=0 2) ( char c) -> c == y 3) ( x , y ) -> x + y 4) ( int a, int b) -> a*a + b*b 5) () -> 42 6) () -> { return 3.14} 7) ( String S) -> { System.out.println(s)}; 8) () -> { System.out.println("Hello World! ")}
  8. 8. Lambda Expression Examples : Spring Workshop 2015 - Java 8 Lambda Expression8 ‫األمثلة‬ ‫شرح‬: (1‫صحيح‬ ‫رقم‬ ‫التعبير‬ ‫يعطى‬ ‫المثال‬ ‫هذا‬ ‫في‬(n)‫إذا‬ ‫ما‬ ‫تحدد‬ ‫منطقية‬ ‫قيمة‬ ‫ويعيد‬ ‫سالب‬ ‫كان‬. (2‫محرف‬ ‫التعبير‬ ‫يعطى‬ ‫المثال‬ ‫هذا‬ ‫في‬(c)‫إذا‬ ‫ما‬ ‫تحدد‬ ‫منطقية‬ ‫قيمة‬ ‫يعيد‬ ‫و‬ ‫ل‬ ‫مساو‬ ‫المحرف‬ ‫هذا‬ ‫كان‬“y”. (3‫رقمين‬ ‫هنا‬ ‫التعبير‬ ‫يعطى‬(x,y)‫جمعهما‬ ‫ناتج‬ ‫هو‬ ‫آخر‬ ‫رقما‬ ‫يعيد‬ ‫و‬. (4‫صحيحين‬ ‫عددين‬ ‫التعبير‬ ‫هذا‬ ‫بإعطاء‬(x,y)‫جمع‬ ‫ناتج‬ ‫هو‬ ‫آخر‬ ‫رقما‬ ‫يعيد‬ ‫العددين‬ ‫مربعي‬(x,y). (5‫الصحيح‬ ‫العدد‬ ‫يعيد‬ ‫و‬ ‫وسطاء‬ ‫أي‬ ‫يأخذ‬ ‫ال‬ ‫تعبير‬42. (6‫المضاعف‬ ‫العدد‬ ‫يعيد‬ ‫و‬ ‫وسطاء‬ ‫أي‬ ‫يأخذ‬ ‫ال‬ ‫تعبير‬3.14.
  9. 9. Lambda Expression Examples : Spring Workshop 2015 - Java 8 Lambda Expression9 ‫األمثلة‬ ‫شرح‬: (7‫محرفية‬ ‫سلسة‬ ‫التعبير‬ ‫هذا‬ ‫بإعطاء‬(S) ‫القياسي‬ ‫الخرج‬ ‫إلى‬ ‫السلسة‬ ‫هذه‬ ‫يطبع‬ ‫من‬ ‫هو‬ ‫هنا‬ ‫التعبير‬ ‫إعادة‬ ‫نمط‬ ‫أن‬ ‫حيث‬ ‫النوع‬(void). (8‫يط‬ ‫وسيط‬ ‫أي‬ ‫التعبير‬ ‫هذا‬ ‫إعطاء‬ ‫بدون‬‫بع‬ ‫عبارة‬“Hello World!”‫الخرج‬ ‫إلى‬ ‫النوع‬ ‫من‬ ‫هو‬ ‫هنا‬ ‫اإلعادة‬ ‫نمط‬ ‫و‬ ‫القياسي‬ (void).
  10. 10. Lambda Expression Spring Workshop 2015 - Java 8 Lambda Expression10 ‫تعابي‬ ‫هي‬ ‫ما‬ ‫عرفنا‬ ‫أن‬ ‫بعد‬ ‫اآلن‬ ‫و‬‫ر‬ ‫شر‬ ‫و‬ ‫صياغتها‬ ‫كيفية‬ ‫و‬ ‫الالمبدا‬‫حنا‬ ‫سوف‬ ‫عنها‬ ‫المبسطة‬ ‫األمثلة‬ ‫بعض‬ ‫أهمية‬ ‫عملي‬ ‫مثال‬ ‫خالل‬ ‫من‬ ‫نناقش‬ ‫و‬ ‫البرنامج‬ ‫سياق‬ ‫ضمن‬ ‫استخدامها‬ ‫الواجهات‬ ‫مع‬ ‫استخدامها‬ ‫آلية‬ ‫الوظيفية‬Functional Interface .‫نوضح‬ ‫سوف‬ ‫بذلك‬ ‫البدء‬ ‫وقبل‬ ‫است‬ ‫مع‬ ‫المرتبطة‬ ‫المفاهيم‬ ‫بعض‬‫خدام‬ ‫الالمبدا‬ ‫تعابير‬.
  11. 11. Functional Interface Spring Workshop 2015 - Java 8 Lambda Expression11 ‫ال‬Functional Interface‫واجهة‬ ‫عن‬ ‫عبارة‬ ‫هي‬ ‫الوظيفية‬ ‫الواجهات‬ ‫أو‬ Interface‫فقط‬ ‫واحدة‬ ‫مجردة‬ ‫طريقة‬ ‫تحوي‬.‫ب‬ ‫سابقا‬ ‫تعرف‬ ‫كانت‬ ‫و‬ SAM‫أي‬(Single Abstract Method. ) ‫الـ‬ ‫قبل‬Java 8‫الفكرة‬ ‫هذه‬ ‫مع‬ ‫تتوافق‬ ‫التي‬ ‫الواجهات‬ ‫من‬ ‫العديد‬ ‫يوجد‬ ‫كان‬‫مثل‬ :  public interface Comparator <T>{ int compare(T o1, T o2); }  public interface Callable <V>{ V call() throws Exception; }
  12. 12. Functional Interface Spring Workshop 2015 - Java 8 Lambda Expression12  public interface ActionListener extends EventListener { public void actionPerformed( ActionEvent e); }  public interface Runnable { public void run(); }
  13. 13. Java 8 Functional Interface Spring Workshop 2015 - Java 8 Lambda Expression13  Java 8 Examples: ‫في‬ ‫عرفت‬ ‫الجديدة‬ ‫الوظيفية‬ ‫الواجهات‬ ‫من‬ ‫العديد‬Java 8‫أضيفت‬ ‫كما‬ ‫العالمة‬@FunctionalInterface‫ننوي‬ ‫أننا‬ ‫على‬ ‫للداللة‬ ‫عن‬ ‫األمثلة‬ ‫بعض‬ ‫هذه‬ ‫و‬ ، ‫وظيفية‬ ‫كواجهة‬ ‫التالية‬ ‫الواجهة‬ ‫عن‬ ‫التصريح‬ ‫الحزمة‬ ‫ضمن‬ ‫موجودة‬ ‫هي‬ ‫التي‬ ‫و‬ ‫الجديدة‬ ‫الواجهات‬ java.util.function:  public interface Predicate<T> { boolean test(T t); }  public interface Function<T , R> { R apply(T t); }
  14. 14. Java 8 Functional Interface Spring Workshop 2015 - Java 8 Lambda Expression14  public interface Consumer<T> { void accept(T t); }  public interface Supplier<T> { T get(); }  public interface BinaryOperator<T> { T apply(T left, T right); }
  15. 15. The Type of Lambda Expression Spring Workshop 2015 - Java 8 Lambda Expression15 ‫؟‬ ‫الالمبدا‬ ‫تعابير‬ ‫نمط‬ ‫ماهو‬ ‫إلى‬ ‫يحددو‬ ‫أن‬ ‫يجب‬ ‫لذلك‬ ‫و‬ ، ‫كأغراض‬ ‫الالمبدا‬ ‫تعابير‬ ‫نقدم‬ ‫الجافا‬ ‫في‬‫نمط‬ ‫الهدف‬ ‫نمط‬ ‫يسمى‬ ‫هذا‬ ‫و‬ ‫وظيفية‬ ‫واجهة‬ ‫ك‬ ‫معروف‬ ‫بيانات‬. ‫و‬ ‫مجردة‬ ‫طريقة‬ ‫على‬ ‫تحتوي‬ ‫أن‬ ‫فقط‬ ‫يمكنها‬ ‫الوظيفية‬ ‫الواجهات‬ ‫أن‬ ‫بما‬ ‫و‬‫احدة‬ ‫تلك‬ ‫في‬ ‫الوسطاء‬ ‫يراسلو‬ ‫أن‬ ‫يجب‬ ‫الالمبدا‬ ‫تعبير‬ ‫وسطاء‬ ‫أنواع‬ ‫فإن‬ ،، ‫الطريقة‬ ، ‫الطريقة‬ ‫تلك‬ ‫إعادة‬ ‫نمط‬ ‫يراسل‬ ‫أن‬ ‫يجب‬ ‫الالمبدا‬ ‫لتعبير‬ ‫اإلعادة‬ ‫نمط‬ ‫و‬‫أنه‬ ‫كما‬ ‫مسموحا‬ ‫يكون‬ ‫أن‬ ‫يجب‬ ‫الالمبدا‬ ‫تعبير‬ ‫قبل‬ ‫من‬ ‫استثناء‬ ‫أي‬ ‫رمي‬‫بوسا‬‫طة‬ ‫الصيغة‬(throws)‫الوظيفية‬ ‫الواجهة‬ ‫في‬ ‫الطريقة‬ ‫لتلك‬. ‫هد‬ ‫نمط‬ ‫إلى‬ ‫محددين‬ ‫المبدا‬ ‫لتعابير‬ ‫أمثلة‬ ‫عن‬ ‫عبارة‬ ‫هي‬ ‫التالية‬ ‫األمثلة‬‫ف‬:
  16. 16. Lambda Expression Examples Spring Workshop 2015 - Java 8 Lambda Expression16  Predicate<Integer> isOdd = n -> n % 2 != 0;  BinaryOperator<Integer> sum = (x, y) -> x + y;  Callable<Integer> callMe = () -> 42;  Runnable runner= () -> { System.out.println("Hello World!"); };
  17. 17. Lambda Expression Examples Spring Workshop 2015 - Java 8 Lambda Expression17 ‫الالمبدا‬ ‫تعابير‬ ‫استخدام‬ ‫من‬ ‫الفائدة‬ ‫نوضح‬ ‫سوف‬ ‫البسيط‬ ‫المثال‬ ‫هذا‬ ‫خالل‬ ‫من‬ ‫اآلن‬ ‫و‬: package com.example.lambda; public class RunnableTest { public static void main(String[] args) { System.out.println("=== RunnableTest ==="); // Anonymous Runnable Runnable r1 = new Runnable(){ @Override public void run(){ System.out.println("Hello world one!"); } };
  18. 18. Lambda Expression Examples Spring Workshop 2015 - Java 8 Lambda Expression18 // Lambda Runnable Runnable r2 = () -> { System.out.println("Hello world two!"); }; // Run me! r1.run(); r2.run(); } } ‫ال‬ ‫تعريف‬ ‫بين‬ ‫الفرق‬ ‫الحظ‬r1‫ال‬ ‫و‬r2‫أس‬ ‫عدد‬ ‫تقليص‬ ‫في‬ ‫ساعدتنا‬ ‫الالمبدا‬ ‫تعابير‬ ‫أن‬ ‫كيف‬ ‫و‬‫طر‬ ‫الوظيفية‬ ‫الواجهة‬ ‫اتطبيق‬ ‫الالزمة‬ ‫البرمجية‬ ‫الشيفرة‬Runnable.
  19. 19. Lambda Expression Examples Spring Workshop 2015 - Java 8 Lambda Expression19  Listener Lambda: ‫الخاصة‬ ‫األحداث‬ ‫معالجة‬ ‫عند‬ ‫الالمبدا‬ ‫تعابير‬ ‫أهمية‬ ‫يوضحان‬ ‫البرمجيين‬ ‫المقطعين‬ ‫هذين‬‫بتصميم‬ ‫باستخدام‬ ‫الواجهات‬swing: //Anonymous Action Listener: testButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ System.out.println("Click Detected by Anon Class"); } });
  20. 20. Lambda Expression Examples Spring Workshop 2015 - Java 8 Lambda Expression20 // Lambdas Listener : testButton.addActionListener(e -> { System.out.println("Click Detected by Lambda Listner"); });

×